Wat mijn doel is:
Ik heb een ellips in mijn programma getekend. Als ik op de ellips klik, wil ik dat hij de muis volgt en zijn verhoudingen behoudt.
Hoe ik dat wil doen:
Ik heb het al zo ver dat ik een cirkel kan vergroten en verkleinen terwijl hij mijn muis volgt. Hiervoor pak ik simpelweg de pythagoras van de xy-coordinaat van de muis ten opzichte van de xy-coordinaat van het midden van de cirkel. Dit dus:
Maar: dit werkt alleen bij een perfect ronde ellips.
In het volgende plaatje zie je 2 ellipsen, een grote en zijn verkleinde versie. De variabelen die je hiervan weet zijn eigenlijk alle behalve X1 en Y1, oftewel de kortste straal en de langste straal in de ellips.
De grote versie is aan het begin van de mouse-drag (M is de muis), de kleine versie is na de mouse-drag. Het blauwe gedeelte is de verandering (oftewel de delta).

Hoe kom ik nu, met alle waarden dit ik weet, aan de waarden van X1 en Y1? Het doel is dus dat hoe je de muis ook beweegt, de verhouding van de ellipse altijd hetzelfde blijft en de muis op de rand van de ellips blijft.
Ik heb al geprobeerd om de verhoudingen nog even te berekenen NA dat ik er via bovenstaande code een perfecte cirkel van heb gemaakt, doordat ik de verhoudingen weet van X0 en X1. Lukt (mij) alleen niet. Zou bijvoorbeeld de verhouding tussen R0 en R1 even groot moeten zijn als de verhouding tussen Y0 en Y1? (oftewel: als R1 80% zo groot is als R0, is Y1 dan ook 80% zo groot als Y0)
Ik zit er nu al de hele dag op te puzzelen maar blijkbaar is mijn wiskunde redelijk ver weggezakt.
Ik heb een ellips in mijn programma getekend. Als ik op de ellips klik, wil ik dat hij de muis volgt en zijn verhoudingen behoudt.
Hoe ik dat wil doen:
Ik heb het al zo ver dat ik een cirkel kan vergroten en verkleinen terwijl hij mijn muis volgt. Hiervoor pak ik simpelweg de pythagoras van de xy-coordinaat van de muis ten opzichte van de xy-coordinaat van het midden van de cirkel. Dit dus:
C#:
1
2
| newRadius.X = newRadius.Y = Math.Sqrt(Math.Pow(mousePos.X - ellipse.CenterX, 2) + Math.Pow(mousePos.Y - ellipse.CenterY, 2)); |
Maar: dit werkt alleen bij een perfect ronde ellips.
In het volgende plaatje zie je 2 ellipsen, een grote en zijn verkleinde versie. De variabelen die je hiervan weet zijn eigenlijk alle behalve X1 en Y1, oftewel de kortste straal en de langste straal in de ellips.
De grote versie is aan het begin van de mouse-drag (M is de muis), de kleine versie is na de mouse-drag. Het blauwe gedeelte is de verandering (oftewel de delta).

Hoe kom ik nu, met alle waarden dit ik weet, aan de waarden van X1 en Y1? Het doel is dus dat hoe je de muis ook beweegt, de verhouding van de ellipse altijd hetzelfde blijft en de muis op de rand van de ellips blijft.
Ik heb al geprobeerd om de verhoudingen nog even te berekenen NA dat ik er via bovenstaande code een perfecte cirkel van heb gemaakt, doordat ik de verhoudingen weet van X0 en X1. Lukt (mij) alleen niet. Zou bijvoorbeeld de verhouding tussen R0 en R1 even groot moeten zijn als de verhouding tussen Y0 en Y1? (oftewel: als R1 80% zo groot is als R0, is Y1 dan ook 80% zo groot als Y0)
Ik zit er nu al de hele dag op te puzzelen maar blijkbaar is mijn wiskunde redelijk ver weggezakt.
There are only 10 types of people in the world: those who understand binary and those who don't.