xy coordinaten hoeken berekenen

Het forum voor overige vragen betreffende wiskunde uit het hoger onderwijs.
Plaats reactie
clankill3r
Nieuw lid
Nieuw lid
Berichten: 21
Lid geworden op: 30 apr 2011, 16:29

xy coordinaten hoeken berekenen

Bericht door clankill3r » 30 apr 2011, 16:58

Afbeelding

Hoe kan ik de coordinaten van de hoeken berekenen?
Ik weet het centrum van de rechthoek (x, y), ik weet de breedte en de hoogte van de rechthoek en de rotatie.

In het geval van het plaatje was het:

centrum = 300, 300
breedte = 100
hoogte = 400
rotatie = 45

arie
Moderator
Moderator
Berichten: 3911
Lid geworden op: 09 mei 2008, 09:19

Re: xy coordinaten hoeken berekenen

Bericht door arie » 30 apr 2011, 22:13

Om te beginnen:
Definieer punt P = (200,0) en punt Q = (0,50).
Kan je de beeldpunten van P en Q vinden als je om de oorsprong O=(0,0) over een hoek alpha roteert?

clankill3r
Nieuw lid
Nieuw lid
Berichten: 21
Lid geworden op: 30 apr 2011, 16:29

Re: xy coordinaten hoeken berekenen

Bericht door clankill3r » 01 mei 2011, 13:46

sorry ik moet nog veel leren..
wat is P en wat is Q?
En waarom is de ene 200 en de ander 0,50?
Wat zijn beeldpunten, ik vind alleen de definitie als in een pixel op het scherm.
De oorsprong(0, 0), is dat de linker bovenhoek van het plaatje of het centrum van de rechthoek?

arie
Moderator
Moderator
Berichten: 3911
Lid geworden op: 09 mei 2008, 09:19

Re: xy coordinaten hoeken berekenen

Bericht door arie » 01 mei 2011, 13:49

Wat is de achtergrond van deze vraag?:
Is het een wiskundeopgave, of ben je een programma aan het schrijven en wil je vooral de oplossing gebruiken, of wellicht nog iets anders?

clankill3r
Nieuw lid
Nieuw lid
Berichten: 21
Lid geworden op: 30 apr 2011, 16:29

Re: xy coordinaten hoeken berekenen

Bericht door clankill3r » 01 mei 2011, 14:11

Voor een programma dat ik schrijf.

arie
Moderator
Moderator
Berichten: 3911
Lid geworden op: 09 mei 2008, 09:19

Re: xy coordinaten hoeken berekenen

Bericht door arie » 01 mei 2011, 16:59

We werken met een coordinatenstelsel waarin elk punt aangegeven wordt door een x-coordinaat en een y-coordinaat. Notatie punt P = (x,y).
Zie bv http://nl.wikipedia.org/wiki/Cartesisch ... tenstelsel, plaatje rechtsboven.
Dit werkt met hetzelfde principe als met je pixelcoordinaten x en y.
Het roteren gaat hierin eenvoudig om de oorsprong O = (0,0).
Daar nemen we dan in eerste instantie het centrum van de rechthoek.
De hoekpunten A, B, C en D van je rechthoek kan je nu aangeven als:
A = (-l/2, -b/2)
B = (l/2, -b/2)
C = (l/2, b/2)
D = (-l/2, b/2)
waarbij l=lengte en b=breedte van je rechthoek
In jouw voorbeeld: rechthoek = 400 x 100:
A=(-200, -50)
B=(200, -50)
C=(200, 50)
D=(-200, 50)
Het centrum = middelpunt = O = (0, 0)
Teken hiervan zelf svp even een plaatje.

Als we vervolgens deze rechthoek roteren om O over alpha graden, kunnen we de volgende rotatieformules gebruiken:
Voor elk punt P = (x,y) geldt dat dit door deze rotatie afgebeeld wordt op punt P ' = (x', y'),
waarbij:
x' = x * cos(alpha) - y * sin(alpha)
y' = x * sin(alpha) + y * cos(alpha)
(zie bv http://nl.wikipedia.org/wiki/Rotatiematrix)

Voorbeeld:
als we over 45 graden roteren (= 45 graden tegen de klok in), dan wordt het beeld van C:
x' = 200*cos(45) - 50*sin(45) = 106.0660...
y' = 200*sin(45) + 50*cos(45) = 176.7766...
Dus: C = (200, 50) wordt afgebeeld op C ' = (106.0660, 176.7766)
De andere geroteerde hoekpunten vind je op dezelfde manier.

Dan rest nog de translatie van het middelpunt = O naar M = (mx, my) = (300, 300):
bij de x-coordinaten van al je punten tel je mx op,
bij de y-coordinaten van al je punten tel je my op.
Het verschoven C ' = C '' = (106.0660 + 300, 176.7766 + 300) = (406.0660, 476.7766).

En als je de coordinaten van de hoekpunten weet, hoef je daartussen alleen nog maar lijnen te tekenen.

Dit is alles.

Let nog wel op dat:
(1) de meeste programmeertalen in radialen werken ipv graden
(2) in de y-as van een bitmap de pixels omgekeerd (van boven naar beneden) genummerd worden
(3) omzetten van gebroken getal naar geheel getal in veel programmeertalen afkappen is, dus al je de coordinaten wilt omzetten naar gehele waarden (integers) kan je er het beste eerst 0.5 bij optellen en dan afkappen (hierdoor ontstaat het normale afronden) - tenzij jouw taal een echte round() functie kent.

Lukt het zo?

clankill3r
Nieuw lid
Nieuw lid
Berichten: 21
Lid geworden op: 30 apr 2011, 16:29

Re: xy coordinaten hoeken berekenen

Bericht door clankill3r » 01 mei 2011, 17:12

Ben je wiskunde leraar?

En ja het is gelukt, heb de rechteronderhoek te pakken. Nu de andere 3 nog maar dat moet wel lukken.

RickMegens
Nieuw lid
Nieuw lid
Berichten: 1
Lid geworden op: 10 mei 2011, 09:34

Re: xy coordinaten hoeken berekenen

Bericht door RickMegens » 10 mei 2011, 09:57

Beste Arie,

Ik heb volgens mij bijna een gelijke probleemstelling. Ik wil een aantal, variabel in te geven, punten op een rechtshoek de X en Y coordinaten bereken. Ik heb dit eerder al eens gedaan voor een circel, maar weet even niet hoe ik dit kan toepassen op een rechthoek. Ik heb dit toen ook op internet gevonden. Hieronder zie je het staan:

Width: 100 // Breedte van de circel of elips
Height: 100 // Hoogte van de circel of elips
Points: 4 // Aantal punten die je wilt op de circel of elips
Point: 0 // Van welk punt wil je de coordinaten? punt 1 = 0 ( dus voor 4 punten 0 t/m 3)

CenterX 50 // (Width / 2)
CenterY 50 // (Height / 2)

SinglePoint 1,570796327 // ((2*pi)/points)

X 50,00 // (centerX * cos((singlepoint*point)))
Y 0,00 // (centerY * sin((singlepoint*point)))

Hoe kan ik dit aanpassen zodat ik dit kan toepassen voor vierkanten / rechthoeken?

Alvast hartelijk bedankt voor de moeite.

Met vriendelijke groet,

Rick Megens

arie
Moderator
Moderator
Berichten: 3911
Lid geworden op: 09 mei 2008, 09:19

Re: xy coordinaten hoeken berekenen

Bericht door arie » 10 mei 2011, 11:55

Eerst nog even 2 vragen:
[1] Je zoekt dus geen punten die op gelijke afstand over je omtrek verdeeld worden, maar punten die een gelijke hoek hebben tov het middelpunt van je rechthoek?
[2] Ligt je rechthoek parallel aan de assen, of kan die over elk willekeurig aantal graden gedraaid liggen?

PS: je hoeft je vragen overigens niet per se aan mij te richten, er zijn meer mensen op dit forum die naast wiskunde ook genoeg van informatica weten
;-)

MarkV
Nieuw lid
Nieuw lid
Berichten: 1
Lid geworden op: 01 mei 2016, 08:03

Re: xy coordinaten hoeken berekenen

Bericht door MarkV » 01 mei 2016, 08:10

Goedemorgen,

Misschien een stomme vraag maar ik kom er niet uit.
Ik probeer een programma te schrijven (android developer) waarbij ik een lijn wil tekenen onder een hoek.
De lijn start vanuit een vast punt alleen de lengte en de hoek zijn variabel.
De hoek is van 0 tot maximaal 360 graden.

Welke formule moet ik daarvoor gebruiken en hoe? Om de juiste x,y coördinaten te kunnen berekenen?

arie
Moderator
Moderator
Berichten: 3911
Lid geworden op: 09 mei 2008, 09:19

Re: xy coordinaten hoeken berekenen

Bericht door arie » 01 mei 2016, 12:45

Als gegeven is:
- het startpunt = (xstart, ystart)
- lengte van de lijn = L
- hoek van de lijn = H
dan is het eindpunt = (xeind, yeind) gegeven door:
xeind = xstart + L * cos(H)
yeind = ystart + L * sin(H)

Ik ben geen android developer programmeur, maar:
sin() en cos() zijn functies die doorgaans beschikbaar zijn via een bibliotheek Math
Vaak zijn deze gedefinieerd in radialen in plaats van graden.
In dat geval worden:
xeind = xstart + L * cos(PI*H/180.0)
yeind = ystart + L * sin(PI*H/180.0)
waarbij PI = pi = 3.141....

Kom je hiermee verder?

Plaats reactie