Ich denke, es ist eine Anzahl von Punkten pro Kreis ... Kompromiss zwischen Genauigkeit und Geschwindigkeit. Normalerweise verwende ich 36 für kleine Kreise und 90 für große. ... und ein paar Tausend für die Großen ... also ist die Idee, so wenig wie möglich zu verwenden, während der Kreis immer noch wie ein Kreis aussieht (im maximalen Zoom) und nicht wie ein Polygon.
Sie können dies auch algebraisch berechnen ...
da=2.0*M_PI/n
e=r-(r*cos(0.5*da))
n
wo die Anzahl der Liniensegmente pro Umfang und e
ist die maximale Entfernung von gewünschten Kreisform. wenn Sie es auf dem gewünschten Fehler in Pixeln festgelegt (und Radius r
ist in Pixel), dann:
n=M_PI/acos((r-e)/r)
Hoffentlich habe ich keinen Fehler machen, während die Gleichungen direkt in SO-Editor abzuleiten.Also, wenn Sie wirklich präzise Kreis wollen gesetzt e=0.4 [pixels]
und Sie sollten in Ordnung sein
[edit1] sin Welle
Die for-Schleife schafft Liste wit diese Eigenschaften:
d(i) = < 0.0 , 10.0)
i = { 0,1,2,...83 }
Dann wird die Sinuswellen gemacht wird :
x(i) = xscale * d(i)
y(i) = yscale * sin(d(i)-time)
Welche gibt Ihnen:
x(i) = < 0.0 , xscale)
y(i) = < -yscale , +yscale)
Also die Sinwave rendert 10/(2*PI)= ~ 1.59
Perioden. Die halbe Überlappung wird durch die Ansicht abgeschnitten. Also in der Theorie könnten Sie 6.28/84 -> 7/84
anstelle von 10/84
verwenden, aber es ist vielleicht nur Sicherheit Wert zu verschiedenen Seitenverhältnis Seettings des Renderings (ich Code in dieser Plattform nicht, so ist dies nur Spekulation auf meiner Seite) Aber wie ich in den Kommentaren sagte Die Sinuswelle ist skaliert, so dass die PI
Periode x
Größe ist gleich PI*circle_radius
so kommt die 84 am wahrscheinlichsten aus dem Kreis (meine ursprüngliche Antwort).
Ja, das ist es! –
Tatsächlich wird der Code im Beispiel für die Punkte auf der Sinuskurve und nicht für den Kreis verwendet. Sie werden überhaupt nicht im Kreis verwendet. – dagda1
@ dagda1 Aber die Sinuswelle ist auf die Größe des Kreises skaliert, also ist es mehr oder weniger dasselbe. – Spektre