Newsgroup: it.comp.lang.pascal
Titolo: Epocicloidi ed ipocicloidi in TP7

Salve a tuto il NG
Dovrei fare un programma in TP7 che disegni delle epocicloidi ed
ipocicloidi. Sapete cosa sono? Beh, immaginate un enorme cerchio ed uno
piccolino. Immaginate quello grande fermo e quelo piccolo che ci gira
intorno rotoloando. Avete in mente tutto ciň? Ora prendete un punto del
cerchio piccolo e fagli disegnare a TP il percorso che compie: avrete una
epocicloide. Se poi il cerchio piccolo gira dentro quello grande, avremo una
ipocicloide.
Fino alla epocicloide me la cavo perchč le coordinate del punto sono
t:=t+0.2
w:=W*R/r
xc::=round(x+(R+r)*cos(W*t)
yc:=round(y+(R+r)*sin(W*t)
xp:=round(xc+r*cos(w*t))
yp:=round(yc+r*sin(w*t))
o qualcosa di simile
Il problema si presenta nelle ipocicloidi che vengono...male
Qualcuno puň aiutarmi?
grazie x le eventuali risposte
ciao da
----------------------------------------------------------------------
Spawn
Powered by Diamond Monster Fusion AGP Voodoo Banshee
spaw...@usa.net
UIN: 21080895
"L'arte rinnova i popoli e ne rivela la vita. Vano delle
scene il diletto ove non miri a preparare l'avvenire"
----------------------------------------------------------------------

Qualcuno puņ aiutarmi?
Per quello che mi ricordo, realizzavo ipocicloidi in questo modo :
xp = (xc + R * cos(alfa)) + r * cos(beta)
yp = (yc + R * sin(alfa)) + r * sin(beta)
dove (xc, yc) ed R rappresentano rispettivamente centro e raggio del
cerchio maggiore ed r centro di quello minore.
(xp, yp) e' il punto disegnato.
Fai avanzare alfa di un passo, ad esempio, di pi/100 e beta di -pi/50.
Prova, poi mi fai sapere.

Un bel di' Spawn scrisse:
S> cerchio piccolo e fagli disegnare a TP il percorso che compie: avrete una
S> epocicloide. Se poi il cerchio piccolo gira dentro quello grande, avremo una
S> ipocicloide.
S> Fino alla epocicloide me la cavo perchè le coordinate del punto sono
S> 
Personalmente, anche se non e' il metodo migliore, scomporrei
il moto dell'epo(ipo)cicloide in 2:
- il moto di rotazione del cerchio piccolo attorno a quello grosso (non rotolamento,
rotazione).
- il moto di rotazione del cerchio piccolo attorno al proprio centro.
In pratica avresti qualcosa di simile (non fatemi fare conti, che oggi
non sono in grado...):
P = (x, y)
(x1, y1) = rotazione di P, intorno al centro del cerchio grosso (raggio R).
(x2, y2) = rotazione di P, intorno al centro del cerchio piccolo (raggio r).
P ruotato = (x1 + x2, y1 + y2)
Spero sia giusto... :-)
-- 
"The difference between theory and practice is that in theory, there is no
difference, but in practice there is"
-- 
Emanuele Cesena
ami...@iol.it
 :)	Occhio all'antispammer NOSPAZ!!
http://www.geocities.com/SiliconValley/Grid/8879

[...]
In realta' e' il metodo migliore, pero' non come l'hai applicato tu, o
meglio, non come hai composto tu i due moti...
Prendiamo:
		(x,y) : punto sull'epicicloide
		(x1,y1) : centro del cerchio mobile di raggio r
		(x2,y2) : centro del cerchio fisso di raggio R
Il punto (x,y) ruota attorno a (x1,y1), quindi, usando l'equaz
parametrica della circonferenza:
 x=x1 +r*cos(w1*t)
 y=y1 +r*sin(w1*t)
A sua volta il punto (x1,y1) ruota attorno a (x2,y2) ad una distanza
di (R+r), quindi:
 x1=x2 +(R+r)*cos(w2*t)
 y1=y2 +(R+r)*sin(w2*t)
Componendo si ottiene l'equaz parametrica dell' epicicloide:
 x=[x2 +(R+r)*cos(w2*t)] +r*cos(w1*t)
 y=[y2 +(R-r)*sin(w2*t)] +r*sin(w1*t)
Bisogna ancora trovare il legame tra i parametri w1 e w2, dato che se
vengono presi a caso non assicurano che il cerchio mobile stia
effettivamente ruotando senza strisciare sul cerchio fisso...
Imponendo quindi la condizione di rotolamento puro (cioe' che nel
punto di contatto i due cerchi abbiamo la stessa vel lineare) si trova
la relazione:
 w1=w2*((R+r)/r)
Passando alle ipocicloidi, vale tutto quello detto per le epicicloidi,
tranne:
1) Al posto di (R+r) ci va (R-r) [anche nella formula delle w!!!]
2) Questo e' probabilmente il problema che fa dire a Spawn che le ipo
"non vengono bene", insieme all'errore nella realazione tra w1 e w2...
Infatti al posto di (w1*t) ci va (-w1*t)!
Questa e' un po' una sottigliezza... 
Infatti nelle epi se il centro del cerchio mobile ruota in senso
orario attorno al centro del cerchio fisso, allora anche il punto sul
cerchio mobile ruotera' in senso orario attrono al centro del cerchio
a cui appartiene, da cui la concordanza di segno tra w1 e w2.
Nelle ipo invece avviene il contrario, se il centro del cerchio mobile
ruota in senso orario attorno al centro del cerchio fisso, allora il
punto sul cerchio mobile ruotera' in senso ANTIorario attorno al
centro del cerchio a cui appartiene, da cui la discordanza di segno
tra w1 e w2, esprimibile nelle equaz o sostituendo (come detto prima)
(-w1*t) a (w1*t), oppure usando la relazione w1=-w2*((R-r)/r) al posto
di w1=w2*((R-r)/r). Mi raccomando non usatele tutte e due assieme se
no si torna al punto di partenza ;)
La maggior parte delle considerazioni presenti in questo msg le ho
fatte supponendo che nelle epi(ipo)cicloidi la condizione di
rotolamento puro (senza strisciamento) dovesse essere sempre
verificata, e quindi ho ricavato le relazioni applicando un po' di
"Meccanica Razionale" ;)
Nel caso la condizione di puro rotolamento non sia in effetti una
condizione, non esistono relazioni prefissate tra w1 e w2, ne' per il
modulo ne per il segno, e quindi non lamentatevi se vengono fuori
delle epi(ipo)cicloidi "strane"... :-)
Non avendo mai visto una epi(ipo)cicloide in vita mia, ho anche
scritto un piccolo programmino (in TP7, of course) per la
visualizzazione. Non mi e' pero' servito a controllare se i
ragionamenti che ho fatto sono effettivamente giusti, non avendo un
termine di paragone. Se qualcuno quindi lo vuole, glielo posso
mandare... cosi' mi dice se quelle visualizzate sono effettivamente
epi(ipo)cicloidi! :-)
E con questo credo proprio di aver detto tutto cio' che avevo da dire
sulle epi(ipo)cicloidi... 
Uff! Che fatica! ;)
Cya!
<<* Vegeta *>>
               | Internet: 
veg...@mindless.com
               | ICQ#    : 6907362
               | 
http://www.geocities.com/Tokyo/Garden/4313
** La piu' grande beffa che il Diavolo abbia mai fatto all'umanita'
** e' stata quella di far credere a tutti che lui non esiste.