Meetkunde

Wiskunde is niet alleen een vak op school. Kom je ergens in de praktijk (bijvoorbeeld tijdens je werk) een wiskundig probleem tegen dan kun je hier om hulp vragen.
Plaats reactie
TVH
Nieuw lid
Nieuw lid
Berichten: 4
Lid geworden op: 15 jul 2016, 10:20

Meetkunde

Bericht door TVH » 15 jul 2016, 11:58

Graag hulp om de assen van een snijpunt te berekenen

Tekening op http://imgur.com/VJpdamL
Afbeelding

Gegeven: A , B , C , z
Gevraagd: hoek: x , y

SafeX
Moderator
Moderator
Berichten: 14278
Lid geworden op: 29 dec 2005, 11:53

Re: Meetkunde

Bericht door SafeX » 15 jul 2016, 14:27

Waar komt dit probleem vandaan?
Wat heb je en waar loop je vast ...

Het is niet duidelijk welke afstand C voorstelt (het kan niet de lengte van het hele lijnstuk zijn!)

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

Re: Meetkunde

Bericht door arie » 16 jul 2016, 13:00

Een snelle oplossing:
Orienteer je schets zodanig dat deze in een assenstelsel komt te liggen,
met punt O = de oorsprong en het lijstuk OR op de x-as:

Afbeelding

Punt T is dan bekend, stel punt Q = (xq, 0) voor een xq die ergens tussen 0 en 150 ligt.
Afhankelijk van xq kan je dan de coordinaten berekenen van punt P = op de lijn l door T en Q, op 50 eenheden afstand boven Q.
Bepaal dan de lijn m door R en P, en bepaal S, het snijpunt van lijn m en lijn k (k door O en T).
De afstand SP is alleen afhankelijk van xq, bepaal numeriek de xq waarvoor SP gelijk is aan 50.
Dan liggen alle punten vast, en kan je
hoek x = hoek STP en
hoek y = hoek QRP
berekenen, bijvoorbeeld via het inproduct.

Kom je hiermee verder?


PS: beantwoord s.v.p. ook de vragen van SafeX.
Ik neem aan dat C = SP = PQ = 50

TVH
Nieuw lid
Nieuw lid
Berichten: 4
Lid geworden op: 15 jul 2016, 10:20

Re: Meetkunde

Bericht door TVH » 16 jul 2016, 15:53

Dank U voor de snelle reactie.
SafeX
Mijn CNC machine (computer gestuurde machine) moet hoeken uit dikke werkstukken zagen (40 mm dik).
Zaag Ø = 180mm, lange zaagas Ø 75 mm.
Als de zaag lijn B raakt (bovenaan) dan is onderaan de zaagsnede op 50 mm van de lijn.
Mijn huidig programma bestaat uit het wegzagen van vierkante / diehoekige blokjes van ± 50 x 50 mm .
Ik wil dit herschijven om de machiene efficiëter te laten werken = minder bewegingen.
---
Arie
Mijn wiskundekennis bestaat uit basisdriehoeksmeetkunde.
xq numeriek bepalen!
ik was begonnen met z=90° en gelijke benen: A=B en x=y
cosinusregel van de driehoek.
C2=(A-C*sinx-C*cosx)2+(-C+A/cosx)2 -2*(A-C*sinx-C*cosx)*(-C+A/cosx)*cosx
0=-C2+A2+C2*sinx2+C2*cosx2-2*A*C*sinx-2*A*C*cosx+2*C2*sinx*cosx+A2/cosx2+C2-2*A*C/cosx-2*A2+2*A*C*cosx+2*A*C*sinx-2*C2*sinx*cosx+2*A*C*cosx-2*C2*cosx2
schrappen:C2-C2+2*A*C*cosx-2*A*C*cosx+2*A*C*sinx-2*A*C*sinx+2*C2*sinx*cosx)-2*C2*sinx*cosx)
Breuk wegwerken:*cosx2
0=A2*cosx2+C2*sinx2*cosx2+C2*cosx4+A2-2*A*C*cosx-2*A2*cosx2+2*A*C*cosx3-2*C2*cosx4
0=-C2*cosx4+2*A*C*cosx3-A2*cosx2+C2*sinx2*cosx2-2*A*C*cosx+A2
(C*cosx2+A*cosx+A)2 klopt niet!

SafeX
Moderator
Moderator
Berichten: 14278
Lid geworden op: 29 dec 2005, 11:53

Re: Meetkunde

Bericht door SafeX » 16 jul 2016, 20:53

Is de vierhoek linksonder de hoeveelheid die je wilt wegzagen ...

TVH
Nieuw lid
Nieuw lid
Berichten: 4
Lid geworden op: 15 jul 2016, 10:20

Re: Meetkunde

Bericht door TVH » 16 jul 2016, 21:35

Het is de hoek TPR

Vergelijkbaar met een plank van 250x5000x40.
Op de koppen van de plank (250 breedte) een driehoek uitzagen (binnenhoek).
De lange plank behouden.

Dit zijn de twee aanvangszaagsneden om het meeste weg te zagen (zeker bij bredere stukken) en waar ik vastloop.
Het verder uitzagen van de driehoek TOR zit in het bestaand programma

NB: Een tekening plaatsen in .pdf of .jpg lukt niet.

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

Re: Meetkunde

Bericht door arie » 17 jul 2016, 21:52

Hier heeft David een aantal mogelijkheden gebundeld om plaatjes weer te geven op Wiskundeforum:
http://www.wiskundeforum.nl/viewtopic.php?f=15&t=5039

Ik gebruik doorgaans tinypic.com (http://tinypic.com/), na uploaden krijg je daar een aantal links, copy-paste de link in de vorm [ img ] .... [ /img ] naar dit forum en je plaatje wordt hier zichtbaar.

Een extra plaatje is welkom, voor het huidige plaatje hierboven vind ik als oplossing:
xq = 67.41066576149936122424773823 (yq = 0, want Q ligt op de x-as)
xp = 63.37417936005688282779436705
yp = 49.83680143760201181094311042
hoek x = 19.63051174679526720636408601
hoek y = 29.91229840788645298404781202

Als in mijn eerdere plaatje SP de afstand is van P tot lijn OT, dan klopt dit echter niet, want SP staat niet loodrecht op OT.
Punt P moet dan iets (maar niet veel) opschuiven naar rechtsboven.

Dus: in hoeverre komen deze uitkomsten overeen met jouw praktijkprobleem?

TVH
Nieuw lid
Nieuw lid
Berichten: 4
Lid geworden op: 15 jul 2016, 10:20

Re: Meetkunde

Bericht door TVH » 25 jul 2016, 11:06

Perfect.
Mijn excuses voor de late reactie daar wij een weekje de Scottish Highlands gaan bewonderen waren.
Weg van telefoons en emails.
Mijn bestaande simulatie in mijn CAD programma is exact hetzelfde.
Arie: kunt U mij op weg helpen om dit in een variabele macro te laten berekenen.
Ik denk aan 2 vergelijkingen die ik verder kan uitwerken of ligt het iets moeilijker.

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

Re: Meetkunde

Bericht door arie » 25 jul 2016, 22:13

Hieronder een programma, geschikt voor Pari/GP.
Waarschijnlijk kan je dit zelf wel aanpassen naar de taal waarin jij programmeert.

De gebruikte letters voor hoeken, lijnen en punten komen overeen met mijn eerdere plaatje.

alle tekst op een regel na \\ is commentaar

alle variabelen, behalve input parameters, zijn globaal (= aan te roepen in het hele programma)

alle goniometrische functies zijn in radialen, vandaar de factor Pi/180.0

FUNCTIES:

getxy(A,B,C,z) berekent hoek x en hoek y, gegeven A, B, C en z

calcPS(x): input = x = Qx, output = lengte van PS

losop(): benadert de oplossing x = Qx, zodanig dat
calcPs(x) = C, ofwel
calcPs(x) - C = 0.
Dit gaat met de bisectiemethode, zie bijvoorbeeld
https://nl.wikipedia.org/wiki/Halveringsmethode.
Sommige programmeeromgevingen hebben dit reeds standaard ingebouwd, vaak als "solve()" functie.
We beginnen met lage waarde xlo = 0.01
en met hoge waarde xhi = A - 0.01.
x = Qx moet tussen deze grenzen liggen.

hoekABC(Ax, Ay, Bx, By, Cx, Cy):
Gegeven driehoek ABC, met punten A=(Ax,Ay), B=(Bx,By) en C=(Cx,Cy),
bereken dan hoek beta = hoek ABC
Dit gaat via het inproduct, zie bijvoorbeeld.
https://nl.wikipedia.org/wiki/Inwendig_product

Code: Selecteer alles

hoekABC(Ax, Ay, Bx, By, Cx, Cy)={
Ax = Ax - Bx;
Ay = Ay - By;
Cx = Cx - Bx;
Cy = Cy - By;

\\ inner product:
ip = Ax*Cx + Ay*Cy;
\\ length of a:
la = sqrt(Ax*Ax + Ay*Ay);
\\ length of c:
lc = sqrt(Cx*Cx + Cy*Cy);

\\return value:
acos(ip/(la*lc))*180/Pi
}


\\ gegeven x = Qx, bereken coordinaten van P en lengte SP:
\\   P ligt boven Q op lijn QT, afstand PQ = Cl
\\   als we P weten snijden we lijn RP met lijn OT
\\   dan weten we punt S en afstand PS
calcPS(x)={
Qx = x;

\\ richtinsvector voor lijn l = QT:
RVx = Tx - Qx;
RVy = Ty - Qy;

\\ length of QT:
QTl = sqrt(RVx*RVx + RVy*RVy);

\\ calculate point P:
lambda = Cl / QTl;
Px = lambda*RVx + Qx;
Py = lambda*RVy + Qy;

\\ richtingsvector voor lijn m = RP
RVx = Px - Rx;
RVy = Py - Ry;

\\ length of RP:
RPl = sqrt(RVx*RVx + RVy*RVy);

\\ normaliseer richtingsvector tot lengte 1:
RVx = RVx / RPl;
RVy = RVy / RPl;

\\ snij lijn m (=RP) en k(=OT):
PS = (tanz*Px - Py) / (RVy - tanz*RVx);

\\RETURN PS:
PS
}


\\ benader de Qx waarvoor PS = C
losop()={
xlo = 0.01;
xhi = A - 0.01;

for(i=1,100,
  xmid = (xlo+xhi)/2.0;
  ymid = calcPS(xmid) - C;
  if(ymid<0.0,
    xlo = xmid,
    \\ELSE:
    xhi = xmid
    );
  );
\\RETURN Qx:
(xlo+xhi)/2.0
}


getxy(A,B,C,z)={
\\maak de lengtes globaal beschikbaar:
Al = A;
Bl = B;
Cl = C;

\\ coordinaten van punt T:
Tx = B*cos(z*Pi/180.0);
Ty = B*sin(z*Pi/180.0);

tanz = tan(z*Pi/180.0);

Rx = A;
Ry = 0.0;

Qy = 0.0;
Qx = losop();

print("Qx = ",Qx);

x = hoekABC(0.0, 0.0, Tx, Ty, Px, Py);
y = hoekABC(0.0, 0.0, Rx, Ry, Px, Py);

print("hoek x = ", x);
print("hoek y = ", y);
}


\\MAIN PROGRAM:
{
getxy(150,200,50,75);
}

Plaats reactie