Stelling van Pythagoras?

Moderators: dirkwb, Xilvo

Gebruikersavatar
Berichten: 96

Stelling van Pythagoras?

De vraag gaat over het volgende hobby project:


ik verschuif/roteer de 8 hoekpunten dmv matrixen ....
dus ik weet waar de 8 hoekpunten zijn,
dan dmv de stelling van Pythagoras reken ik de draadlengtes uit....

Maar nu weet ik niet goed waar de hoek ligt.... die gekke katrollen maken het moeilijk...
ik had eigenlijk gewoon een vast gaatje ofzo moeten maken... :-) )

Afbeelding
Alle hoeken zien er zo uit....

ik dacht, de lijn door het hart van het zwenkgedeelte door omhoog trekken, en dan de schuine doortrekken totdat ze elkaar snijden...

Maar ik denk niet dat dat klopt?
https://www.dropbox.com/s/gm2u5uof32hoq ... l.png?dl=0

Want dat betekend hoe lager het object hangt, hoe langer de staande lijn word?
En als hij super laag hang, snijden de lijnen elkaar nooit....?

Dus eigenlijk de vraag, hoe hier nu mee om te gaan?
Alvast bedankt...

Berichten: 463

Re: Stelling van Pythagoras?

Afbeelding
Hierboven een plaatje van het bovenaanzicht:
D = het draaipunt van de katrol, neem dit als oorsprong van het x-y-vlak
B = het bevestigingspunt van de kabel aan het blok
K = het punt waar de kabel de katrol verlaat.
Als je de coordinaten van B en D weet, dan kan je ook de afstand BD berekenen (stelling van Pythagoras, 2-dimensionaal).
De afstand DK kan je meten (deze is constant).
Je weet dan ook de afstand BK = BD - DK.

Nu naar 3 dimensies:
De hoogte van punt K is constant, en Kz = de z-coordinaat van K kan je ook meten
De hoogte van hoekpunt B = Bz heb je gedefinieerd (de positie van je groene blok weet je)

Dus de kabellengte van K naar B in 3 dimensies is dan

\(\text{kabellengte} = \sqrt{BK^2 + (Kz-Bz)^2} \)

PS:
Zijn bovenstaande aannames betreffende de katrol (die ik uit je foto heb afgeleid) correct?

Gebruikersavatar
Berichten: 96

Re: Stelling van Pythagoras?

pfff...moet ik ff goed lezen hoor... :-)

ja, even kijken... ik heb gezegd, dat aan het begin , het object hangt precies in de midden van het frame ... en de midden van het frame is dus 0,0,0...
dan heb ik de hoeken van het frame (voorlopig even makkelijk) gezegd, dat de ene hoek = 1/2 frame lengte, 1/2 frame breedte, 1/2 half frame hoogte....

maar dat zwenkwieltje, en het katrolwieltje geeft me nu dat ik ff niet meer weet hoe het moet....

ik weet niet eens goed hoe ik het in het nederlands moet zeggen... :-)

Gebruikersavatar
Berichten: 96

Re: Stelling van Pythagoras?

https://www.dropbox.com/s/hk8zx4nbkg6ch ... e.png?dl=0

ik heb dus gezegd dat de midden van het frame 0,0,0 ,

en heb het object precies in de midden gehangen als ik start, want ja, ik moet ergens beginnen)

de 8 hoekpunten van het object, zijn ook vanuit dat 0,0,0 gedefinieerd...
dus 1/2 lengte, 1/2 breedte en een halve hoogte van het object.... (en dan + of - )
deze coördinaten staan in een array (tabel), en dmv matrixen kan ik die verschuiven in 3 assen, en roteren om 3 assen.... maar eerst maar eens alleen vanuit 0,0,0...

de hoeken van het frame , heb ik dus ook gemeten van uit 0,0,0...

maar ik zit er dus een beetje mee, vanuit de 0,0,0 gemeten, waar zit nu de hoek,,, Ik heb nu even ongeveer gemeten.... maar ja dat was meer om ergens te kunnen starten....

maar ik heb nu dus, bij grotere verplaatsingen, dat er draadjes slap gaan hangen, of dat ik de magneetjes los trek...

maar het valt al niet mee om even een kladje te maken... :-)

Berichten: 463

Re: Stelling van Pythagoras?

Afbeelding

Ik denk nu dat het anders ligt, daarom nog enkele aanvullende vragen:
- kan de rode schijf (aangegeven met blauwe rechthoek) draaien om de blauwe as (// z-as, verticaal, van onder naar boven) ?
- indien die schijf vast zit gemonteerd op het frame, welke hoek maakt de katrol dan in het x-y-vlak ?
- is het katrolwiel waar de draad overheenloopt de donkerrood getekende cirkel ?
- is de zwarte punt M het middelpunt van het katrolwiel ?

Berichten: 463

Re: Stelling van Pythagoras?

Afbeelding
Bekijk alle coordinaten vanuit jouw assenstelsel:
B = (bx, by, bz) is bekend
M = (mx, my, mz) is ook bekend
noem P = (mx, my, bz)
dan is driehoek BPM rechthoekig met
\(\small MP = mz - bz\)
\(\small BP = \sqrt{(mx-bx)^2 + (my-by)^2}\)
\(\small BM = \sqrt{MP^2 + BP^2}\)

De kabellijn KB is een raaklijn aan de katrol, dus hoek MKB is rechthoekig, en
\(\small BK = \sqrt{BM^2 - MK^2}\)
waarbij MK de straal van de katrolcirkel is.

Punt K verandert afhankelijk van de positie van het blok, maar je wil de kabellengte vanaf een vast punt weten.
Kies daarvoor punt L, recht boven M.
Dan is de totale kabellengte BL = BK + booglengte KL
waarbij
booglengte KL = (straal MK) * (hoek KML in radialen)
en
\(\small ∠KML = \pi - ∠KMB - ∠BMP = \pi - asin\left(\frac{BK}{BM}\right) - asin\left(\frac{BP}{BM}\right)\)
alle hoeken berekend in radialen

Gebruikersavatar
Berichten: 96

Re: Stelling van Pythagoras?

RedCat schreef: wo 24 nov 2021, 13:35 Afbeelding

Ik denk nu dat het anders ligt, daarom nog enkele aanvullende vragen:
- kan de rode schijf (aangegeven met blauwe rechthoek) draaien om de blauwe as (// z-as, verticaal, van onder naar boven) ?
- indien die schijf vast zit gemonteerd op het frame, welke hoek maakt de katrol dan in het x-y-vlak ?
- is het katrolwiel waar de draad overheenloopt de donkerrood getekende cirkel ?
- is de zwarte punt M het middelpunt van het katrolwiel ?
ja die kan draaien, beetje zwenkwiel idee.... (ik heb het weer veel te moeilijk gemaakt :-) )

en die volgt eigenlijk altijd de draad.... en de zwarte punt M is inderdaad de midden van het katrolwiel...

het is wel dat het draad over het rode wiel, precies in het hart komt van het draaiende gedeelte in de blauwe rechthoek...
Laatst gewijzigd door Swets op wo 24 nov 2021, 16:11, 1 keer totaal gewijzigd.

Gebruikersavatar
Berichten: 96

Re: Stelling van Pythagoras?

Pff niet echt makkelijk... :-)
ga het nog eens allemaal een paar keer goed door lezen....

ik had die draadjes beter gewoon op een vast punt (door een klein gaatje) naar buiten kunnen laten komen...
maarja... waarom de makkelijkste weg kiezen... :-)

Berichten: 463

Re: Stelling van Pythagoras?

Afbeelding
Dan ben je er:

[1] Vanuit de oorsprong van je assenstelsel (= het midden van het frame) bepaal je de coordinaten van het hoekpunt/kabelmontagepunt van het middenblok (groen): B = (bx, by, bz)

[2] De draad volgt het traject D-T-L-K-B
Van bovenaf gezien (zoals in mijn eerste post) verdwijnt de draad DT via het middelpunt van de katrolvoet verder het frame in, en is de positie van dat verdwijnpunt (en dus ook de x-y-locatie van punt D ten opzichte van je oorsprong: dx en dy) constant en gedefinieerd door de frame-afmetingen
Dan hebben we ook (nog steeds van bovenaf gezien):
\(DB = \sqrt{(dx-bx)^2 + (dy-by)^2}\)

[3] Het katrolwiel is zodanig gemonteerd, dat MTDP een rechthoek vormt,
dus BP = DB - DP = DB - MT = DB - de straal van het katrolwiel

[4] De z-coordinaat van het middelpunt M van het katrolwiel is ook constant en op te meten: mz = de hoogte van M boven het middelpunt van je rooster (dus boven het vlak door de x- en y-as)
Hiermee bepaal je lengte MP = mz - bz.

[5] Als in mijn vorige post hebben we ook nog steeds
\(BM = \sqrt{MP^2 + BP^2}\)
en met deze MP, BP, BM kan je nu doorgaan in mijn vorige post vanaf
"De kabellijn KB is een raaklijn aan de katrol ...."

Gebruikersavatar
Berichten: 96

Re: Stelling van Pythagoras?

Ik heb even een filmpje online gezet, wat waarschijnlijk meer duidelijk maak... daar is alles wat beter zichtbaar...


en hier wat plaatjes met maten....
https://www.dropbox.com/s/ktl6fkh5ineg7 ... e.pdf?dl=0
https://www.dropbox.com/s/esphqd7knwzh7 ... k.pdf?dl=0

in de software werk ik nu met deze getallen:

Code: Selecteer alles

int LengthBlockBottom = 118;
int WidthBlockBottom = 48;
int HighBlock = 41;

int LengthBlockTop = 68;
int WidthBlockTop = 78;

int LengthFrame = 305;
int WidhtFrame = 180;
int HighFrame = 275;
en met het onderstaande reken ik de lengte uit van 1 draad.

xCorner1, yCorner1, zCorner1 zijn de coordinaten van de hoek... (even nog een beetje grof gemeten)

en de x,y,z zijn de coordinaten van het punt op het object, waar de draad heen loopt..
dit heb ik dus 8x, getallen zijn het zelfde, alleen wat plussen en minnen
Die funtie Pythagoras = mot1lengthX^2 + mot1LengthY^2 + motLengthZ^2, en daar de wortel uit...

Code: Selecteer alles

long Mot1(int X, int Y, int Z) {
  // z,y,z uit rekenen van uit main x,y,z
  // x,y,z van hoek 1

  long xCorner1 = -175;
  long yCorner1 = -115;
  long zCorner1 = 150;
  long result;

  long Mot1LengthX = (xCorner1 - X) - (LengthBlockBottom / 2);
  long Mot1lengthY = (yCorner1 - Y) - (WidthBlockBottom / 2);
  long Mot1lengthZ = (zCorner1 - (Z)) - (HighBlock / 2);

  long Mot1Length = Pythagoras(Mot1lengthX, Mot1LengthY, Mot1lengthZ );

  SerialUSB.print("Lengt Motor 1 :");
  SerialUSB.print(Mot1Length);
  SerialUSB.print("mm, total Steps :");
  SerialUSB.println(Mot1Length * StepUnit);

  result = Mot1Length * StepUnit;
  return result;
};
ik vroeg me af, want ik zie bij jouw uitleg maar 1 plaatje van het zijzicht... maar dat komt zeker omdat het een soort zwenkwieltje is, en altijd de draad volgt?


nu alles nog eens goed lezen... kijken hoe ik het in het programma krijg....

Weer heel erg bedankt...!!!!

Gebruikersavatar
Berichten: 96

Re: Stelling van Pythagoras?

heb toch steeds het gevoel dat ik nog een stuk mis...

ook omdat punt d,p en B niet op het zelfde vlak liggen....
, dat lijkt wel zo in jouw tekening....
maar volgens mij moet ik het verhaal 2x doen....

nog eens even goed denken...

Berichten: 463

Re: Stelling van Pythagoras?

Swets schreef: wo 24 nov 2021, 21:47 ik vroeg me af, want ik zie bij jouw uitleg maar 1 plaatje van het zijzicht... maar dat komt zeker omdat het een soort zwenkwieltje is, en altijd de draad volgt?
Klopt, dat vlak loopt door de verticale framebuis links-voor en het punt B.
Ingetekend in jouw film levert dit:
wtfcablefilm3.png
(1) = vooraanzicht, geel de kabel; D, P en B liggen op gelijke z-hoogte (bz = pz = dz)
(2) en (3) = bovenaanzicht: de kabel verdwijnt in de katrolvoet = de middenas van de frambuis links-voor;
punt D heeft dus dezelfde x- en y-coordinaat als het midden van die framebuis

De tekeningen in je vorige post zijn erg mooi.
Als ik het goed zie (je eerste tekening) is van het frame:
- de breedte (x-richting) = 324.97
- de diepte (y-richting) = 202.87
- de hoogte (z-richting) = 275.00, en dat is gemeten tussen de middelpunten van de katrolwielen (M_boven en M_onder), waardoor de z-coordinaat van M = mz = 275/2 = 137.5

en is van het blok:
- de breedte van de onderkant (x-richting) = 118.00
- de diepte van de onderkant (y-richting) = 48.00
- de hoogte van het totale blok (z-richting) = 41.00

Volgens je tweede tekening staat het middelpunt van het katrolwiel (M) horizontaal gezien op 12.49 afstand van het middelpunt van de framebuis (de lijn T-D),
en op 22.60 hoogte boven de frame-hoek (noem die hoek H).
Dus de straal van het katrolwiel = TM = DP = 12.49

In jouw rooster (oorsprong in middelpunt van het frame) zijn de coordinaten van
- de links-voor-onder hoek B van het blok dus B = (-118/2, -48/2, -41/2)
- de links-voor-boven hoek H van het frame dus H = (-324.97/2, -202.87/2, 275/2 - 22.60)

D = (hx, hy, bz) = (-324.97/2, -202.87/2, -41/2)
Via de stelling van Pythagoras is
BD = 129.249...
waaruit volgt:
BP = BD - DP = 129.249 - 12.49 = 116.759...

We wisten al mz = 137.5, en we hebben pz = bz = -41/2 = -20.5
Dus MP = 137.5 - (-20.5) = 158
zodat
\(\small BM=\sqrt{MP^2+BP^2} = 196.4603...\)
en (omdat de katrolwielstraal = MK = DP = 12.49):
\(\small BK=\sqrt{BM^2-DP^2} = 196.0629...\)

Dan berekenen we de hoek KML in radialen:
\(\small ∠KML = \pi - ∠KMB - ∠BMP = \pi - asin\left(\frac{BK}{BM}\right) - asin\left(\frac{BP}{BM}\right) = 0.99800248...\)
(ter orientatie: 0.99800248 radiaal = 57.18º)

Nu is de booglengte KL = MK * ∠KML = 12.46505
en is de totale kabellengte BL = BK + booglengte KL = 208.5280064....

De totale kabellengte BL is gerekend vanaf punt L over de katrol tot aan punt B, en die hangt af van de positie van het middenblok.
De kabellengte/afstand van punt L tot aan de motor is constant.

Gebruikersavatar
Berichten: 96

Re: Stelling van Pythagoras?

Heel erg bedankt.... ik ga kijken of ik het er weer allemaal in kan krijgen....

ook wel fijn, die lijn DT is goed te meten.....

Gebruikersavatar
Berichten: 96

Re: Stelling van Pythagoras?



echt veel en veel beter....
ik heb nu het onderstaande voor elke hoek....
het enigste verschil zijn hier en daar wat minnen boven aan om aan te geven welke hoek het is.....

en eerst had ik daar ook nog + en - de halve maten van het object....

maar later had ik pas door, dat ik dat eigenlijk al deed als ik de coordinaten van de hoekpunten in de array gooi, bij de start van het programma....

dus bij de onderstaande functie, zijn de x,y,z de echte coordinaten van dat hoekpunt....

ooke het draaien gaat nu goed.... en (wat ook weer logies is) hij beweegt nu veel mooier.... eerst bij langere verplaatsingen ging hij toch ook draaien.... dat doet hij nu niet meer.....

helemaal aan het einde schoot er toch weer een magneetje los....
ik denk dat ik nu wel op het punt ben een nieuw frame te printen, en de draadjes vast aan te sluiten,,, misschien met een elastiek/veertje er tussen... nog ff kijken..

maar misschien zitten er nog dingen in me code wat slimmer zou kunnen?

Code: Selecteer alles

long Mot1(int X, int Y, int Z) {
  // z,y,z uit rekenen van uit main x,y,z
  // x,y,z van hoek 1
  long result;

  long XCorner1 = -(LengthFrame / 2);
  long yCorner1 = -(WidhtFrame / 2);
  long zCorner1 = (HighFrame / 2);

  long Mot1LengthX = XCorner1 - X ;
  long Mot1lengthY = yCorner1 - Y ;
  long Mot1lengthZ = zCorner1 - Z ;

  float DB = Pythagoras(Mot1lengthY, Mot1LengthX, Mot1lengthZ );

  float BP = DB - (DiaKatrol / 2);
  float MP = zCorner1 - Z;

  float BM = Pythagoras(MP, BP, 0 );

  float BK = Pythagoras(BM , (DiaKatrol / 2), 0);

  float hoekKLM = phi - asin(BK / BM) - asin(BP / BM);

  float KL = (DiaKatrol / 2) * hoekKLM;

  float Mot1Length = BK + KL;

  SerialUSB.print("Lengt Motor 1 :");
  SerialUSB.print(Mot1Length);
  SerialUSB.print("mm, total Steps :");
  SerialUSB.println(Mot1Length * StepUnit);

  result = Mot1Length * StepUnit;
  return result;
};

Berichten: 463

Re: Stelling van Pythagoras?

Mooi! Ziet er degelijk uit, ik verwacht dat die katrolwielen minder kabelslijtage zullen geven dan eenvoudige gaatjes. Bovendien kan je als toeschouwer door die wielen de kabelbewegingen beter volgen. Leuk om het geheel in werking te zien.

Nog een kleinigheid:
In je code heb je datatypen long en float. Vanuit programmeertaal C ken ik die als gehele resp. drijvende-komma getallen.
In je berekeningen zoals
long XCorner1 = -(LengthFrame / 2);
zullen de resultaatwaarden afgerond worden naar beneden, bv 9/2 geeft als antwoord 4
Is het niet beter je hele berekening uit te voeren met float getallen?
Dat voorkomt (eventueel herhaalde) afrondingsfouten.

Het eindantwoord kan je dan indien nodig wel afronden tot geheel getal:
long result = (fresult + 0.5)
waarbij fresult dan de float versie van result is,
en result de op gebruikelijke wijze afgeronde waarde van fresult (<.5 naar beneden, ≥.5 naar boven).
Je motor krijgt dan steeds een geheel getal aangeboden, maar in je berekeningen kan in alle volgende stappen doorgaan met de nauwkeuriger float versie van dat getal.

Reageer