<!-- MHonArc v2.3.3 -->
<!--X-Subject: Re: Rizeni krokoveho motorku -->
<!--X-From: Petr Krc <pekr@magneton.cz> -->
<!--X-Date: Fri, 31 Mar 2000 17:18:23 +0200 -->
<!--X-Message-Id: 38E4CE81.FA60C51E@magneton.cz -->
<!--X-Content-Type: text/plain -->
<!--X-Reference: 1.5.4.32.20000331201429.00b5e9bc@193.165.131.202 -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML//EN">
<HTML>
<HEAD>
<TITLE>Re: Rizeni krokoveho motorku</TITLE>
<LINK REV="made" HREF="mailto:pekr@magneton.cz">
</HEAD>
<BODY>
<!--X-Body-Begin-->
<!--X-User-Header-->
<!--X-User-Header-End-->
<!--X-TopPNI-->
<HR>
[<A HREF="msg01165.html">Date Prev</A>][<A HREF="msg01167.html">Date Next</A>][<A HREF="msg01158.html">Thread Prev</A>][<A HREF="msg01157.html">Thread Next</A>][<A HREF="maillist.html#01166">Date Index</A>][<A HREF="threads.html#01166">Thread Index</A>]
<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>Re: Rizeni krokoveho motorku</H1>
<HR>
<!--X-Subject-Header-End-->
<!--X-Head-of-Message-->
<UL>
<LI><em>To</em>: <A HREF="mailto:hw-news@list.gin.cz">hw-news@list.gin.cz</A></LI>
<LI><em>Subject</em>: Re: Rizeni krokoveho motorku</LI>
<LI><em>From</em>: Petr Krc <<A HREF="mailto:pekr@magneton.cz">pekr@magneton.cz</A>></LI>
<LI><em>Date</em>: Fri, 31 Mar 2000 17:12:49 +0100</LI>
<LI><em>Organization</em>: MAGNETON a.s.</LI>
<LI><em>References</em>: <<A HREF="msg01158.html">1.5.4.32.20000331201429.00b5e9bc@193.165.131.202</A>></LI>
</UL>
<!--X-Head-of-Message-End-->
<!--X-Head-Body-Sep-Begin-->
<HR>
<!--X-Head-Body-Sep-End-->
<!--X-Body-of-Message-->
<PRE>
Libor Kavan wrote:
> >Ani ne, 2051 zvladne linearni interpolaci ve 3 osach s 32-bitovym
> >rozlisenim vcelku bez problemu.

> Mas s tim nejake zkusenosti ?
Ano.

> Nebyly by nejake zdrojacky
Ne.

> ( to jsem asi hodne drzej, ze)?
Ano. ;-)

> Ja jsem pouzil controllery z microconu a ty sikme cary resim tak,
> ze na krokacich nastavim hodne nizkou rychlost a nepouzivam akceleraci.
> Do obou kontroleru poslu rychlost a vzdalenost( predem zpocitanou v PC)
> a pak oba motory najednou zpustim. Reseni to sice je, ale ne idealni ...

I tak se da.
Ja na to pouzil modifikovany algoritmus od pana, jehoz jmeno jiste
doplni nekdo jiny, kdo nema takovou sklerozu, jako ja.
Ten algoritmus je velmi jednoduchy, vystaci s operacemi scitani,
odcitani a celociselnem deleni dvema.
Zjednodusene (v pseudokodu) se to da popsat takto:

--- cut ---

Line3D:
=======
> Vstupni promenne
X1,Y1,Z1       - startovni souradnice
X2,Y2,Z2       - cilove souradnice
KX,KY,KZ       - rozdil mezi cilovymi a startovnimy souradnicemi
K0 [KX]        - nejdelsi osa
K1 [KY]        - stredne dlouha osa
K2 [KZ]        - nejkratsi osa
E0             - mezihodnota nejdelsi osy
E1             - mezihodnota stredne dlouhe osy
E2             - mezihodnota nejkratsi osy
S0             - oznaceni a smer nejdelsi osy (x,y,z)
S1             - oznaceni a smer stredne dlouhe osy (x,y,z)
S2             - oznaceni a smer nejkratsi osy (x,y,z)

> Vypocet rozdilu delky v dane ose
KX=X2-X1
KY=Y2-Y1
KZ=Z2-Z1

> Setrideni os od nejdelsi po nejkratsi (v absolutnich hodnotach)
K0=max_abs(KX,KY,KZ)
K1=mid_abs(KX,KY,KZ)
K2=min_abs(KX,KY,KZ)

> Naplneni bitovych masek pro krokovani podle delky os
S0=dir_max(KX,KY,KZ)
S1=dir_mid(KX,KY,KZ)
S2=dir_min(KX,KY,KZ)

> Korekce symetricnosti
E0=K0/2
E1=E0+K1
E2=E0+K2
E0=K0

> Vlastni vypocet drahy
while (E0>0)
 step(S0)
 if E1>K0
  step(S1)
  E1=E1-K0
 endif
 if E2>K0
  step(S2)
  E2=E2-K0
 endif
 E0=E0-1
 E1=E1+K1
 E2=E2+K2
end

--- cut ---

Snad jsem to nepopletl, uz je to nejaky patek.

-- 
Regards
           Petr Krc

</PRE>

<!--X-Body-of-Message-End-->
<!--X-MsgBody-End-->
<!--X-Follow-Ups-->
<HR>
<!--X-Follow-Ups-End-->
<!--X-References-->
<UL><LI><STRONG>References</STRONG>:
<UL>
<LI><STRONG><A NAME="01158" HREF="msg01158.html">Re: Rizeni krokoveho motorku</A></STRONG>
<UL><LI><EM>From:</EM> Libor Kavan <lkavan@krkonose.cz></LI></UL></LI>
</UL></LI></UL>
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg01165.html">Re: Rizeni krokoveho motorku</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg01167.html">RE: Rizeni krokoveho motorku</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg01158.html">Re: Rizeni krokoveho motorku</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg01157.html">RE: Rizeni krokoveho motorku</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="maillist.html#01166"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="threads.html#01166"><STRONG>Thread</STRONG></A></LI>
</UL>
</LI>
</UL>

<!--X-BotPNI-End-->
<!--X-User-Footer-->
<!--X-User-Footer-End-->
</BODY>
</HTML>