pondělí 28. ledna 2019

Kružnice či oblouk třemi body v Revitu

Zdravím, dnes jedna geometrická i aritmetická úloha. Zkonstruovat kružnici či oblouk 3-mi body v Revitu není problém. Ale pokud to má být parametrický oblouk, tak určení polohy středu kružnice a jejího poloměru už tak jednoduché není. Sestrojit to pomocí os spojnic jednotlivých bodů je jednoduché, pokud to rýsujete. Zadat to Revitu v rodině, aby zobrazení a případné těleso na tuto kružnici napojené fungovalo správně, mne "trochu" potrápilo :-) .
Pro výpočet středu kružnice, když znáte polohu 3 bodů, je využito výpočtu determinantu soustavy rovnic a Cramerova pravidla - přiznávám, že už jsem to vše úspěšně zapomněl.
V Revitu v rodině vypadá zadání takto:


Pro zjednodušení jsem nedával vše do jednoho vzorce, dokola pak musíte řešit problém nekonzistentních jednotek. Hodnoty x a y jednotlivých bodů mohou být například výška a šířka dveří, třetí bod je na ose dveří ve výšce VO.

Textový zápis pro jednodušší kopírování:
m1 = (x1+x2)/2; n1 = (y1+y2)/2; m2 = (x1+x3)/2; n2 = (y1+y3)/2;

c1 = (x2-x1)*m1 + (y2-y1)*n1; c2 = (x3-x1)*m2 + (y3-y1)*n2;

mx = (x2-x1)*(y3-y1)+(y2-y1)*(x1-x3);

csx = (c1*(y3-y1)+c2*(y1-y2))/mx;
csy = (c1*(x1-x3)+c2*(x2-x1))/mx;
 
rs = sqrt((csx-x1)*(csx-x1)+(csy-y1)*(csy-y1));

Celkový zápis bez úpravy pro konzistentní jednotky:

csx = ((x2-x1)* (x1+x2)/2 + (y2-y1)* (y1+y2)/2*(y3-y1)+ (x3-x1)* (x1+x3)/2 + (y3-y1)* (y1+y3)/2*(y1-y2))/ (x2-x1)*(y3-y1)+(y2-y1)*(x1-x3);
csy = ((x2-x1)* (x1+x2)/2 + (y2-y1)* (y1+y2)/2*(x1-x3)+ (x3-x1)* (x1+x3)/2 + (y3-y1)* (y1+y3)/2*(x2-x1))/ (x2-x1)*(y3-y1)+(y2-y1)*(x1-x3);

Tak jsem snad někomu ušetřil pár horkých chvil.

Za BIM-Fórum z.s.

Peter Jirát