2010-02-02 4 views
0

J'ai donc joué avec http://processingjs.org/.dessiner des lignes qui dépassent d'un cercle

Je veux dessiner un cercle qui a un groupe de lignes qui en font saillie. Chacune de ces lignes doit être perpendiculaire à la tangente du cercle.

Je n'ai pas nécessairement besoin de savoir comment faire cela dans processing.js, mais je ne me souviens pas vraiment de ma trigonométrie, donc plus d'une explication des maths nécessaires pour tracer cette ligne serait utile, mais si vous savez comment le faire dans processing.js, ce serait cool aussi.

Merci.

Répondre

2

Si la ligne est perpendiculaire à une tangente au cercle, elle traverserait le centre du cercle si elle était prolongée. Si votre cercle est centré en (a, b) avec un rayon r, et que vous voulez le faire sortir à l'angle t, les points de départ sont x1 = a + r cos t, y1 = b + r sin t (I J'ai supposé que vous voulez que la ligne commence à la circonférence, ce que votre question semble impliquer) et si vous voulez que la ligne soit de longueur z, vos points finaux sont x2 = x1 + z cos t, y2 = y1 + z sin t et vous pouvez utiliser la commande de traitement

line(x1,y1,x2,y2) 

Edit: Notez que mon t est mesurée dans le sens horaire à partir de l'axe x. Si vous voulez que ce soit dans le sens inverse des aiguilles d'une montre (ce qui est normal en maths) vous pouvez remplacer sin t par -sin t dans les deux endroits ci-dessus, puisque le traitement a augmenté y en descendant.

+0

C'est génial merci. Juste pour vérifier, t serait l'angle de la circonférence de la ligne ferait saillie? – icco

+0

Pas de problème. En réponse à votre commentaire: non. L'angle de la circonférence est toujours un angle droit (comme vous avez demandé). L'angle t est l'angle que fait la ligne avec l'axe des x. Donc, si vous voulez que ça descende tout droit, vous utiliserez pi/2 (c'est-à-dire 90 degrés: le traitement utilise des radians), comme écrit à l'origine (avec t étant dans le sens des aiguilles d'une montre). – Ramashalanka

+0

Désolé, j'ai mal mis mon commentaire, j'ai implémenté ceci et votre réponse est exactement ce que je voulais. Merci! – icco

0

Pour un cercle, une perpendiculaire à une tangente passerait par le centre du cercle. Toute ligne passant par le centre d'un cercle est perpendiculaire à la tangente au point d'intersection avec le cercle.

0

Idéalement, il peut y avoir des tangentes infinies à un cercle et vous pouvez donc avoir des lignes infinies qui sortent d'un cercle.

Si j'ai bien compris votre question, les éléments suivants pourraient vous aider. Vous pouvez pick random points lying on a circle puis les connecter au centre du cercle. Pour que les lignes sortent réellement du cercle, consdier un cercle de rayon légèrement plus grand que votre cercle original, mais ayant les mêmes coordonnées de centre. Ensuite, choisissez des points aléatoires sur la circonférence de ce cercle extérieur et connectez-les à son centre.

acclamations

1

je vous suggère oublier la tangente et tracer une ligne du centre du cercle dans les directions que vous voulez que la ligne de saillir. Vous pouvez décaler la ligne de la distance du rayon afin qu'elle commence au bord du cercle.

Questions connexes