Jag håller på att göra ett litet program som skall hjälpa mig med mitt rundbord(ett bord för min metallfräs för att kunna dela in för hålborning, kuggfräsning mm). Vet inte om jag fattat frågan rätt, men om du vill räkna ut koordinater på på en cirkel med radien r och du har vinkeln v så är formlerna så här: Tack för att du svarade, men jag är rädd att jag inte riktigt förstår dig. Jag vill försöka att få till det programmeringsriktigt. Jag får problem....Sätta punkter efter vissa vinklar i en cirkel
Jag har redan fixat koderna för att räkna ut grader efter antal punkter på cirklen, men jag skulle vilja visa med en större punkt var vinklen börjar/slutar.
Så här ritar jag cirklen.
<code>
private void Form1_Paint(object sender, PaintEventArgs e)
{
Pen myPen = new Pen(Color.Red);
int r =200; // radius of circle
int x =this.Height/2, y=this.Width/2; // center coordinates of circle
SolidBrush mybrush = new SolidBrush(Color.AntiqueWhite);
e.Graphics.FillEllipse(mybrush, x - r, y - r, r, r);
e.Graphics.DrawEllipse(myPen, x - r, y - r, r, r);
}
</code>
Det jag skulle vilja ha hjälp med är alltså punterna.
För att förtydliga, om jag väljer två punkter så skall alltså en punkt hamna på 180 grader den andra på 360 grader.Sv: Sätta punkter efter vissa vinklar i en cirkel
x = r * cos( v )
y = r * sin( v )
Ex för en cirkel med radien 100 med 10 punkter på cirkeln (=36 grader mellan punkterna) blir första punkten :
x = 100 * cos( 36 ) = 100 * 0.809 = 80.9
y = 100 * sin ( 36 ) = 100 * 0.587 = 58.7
alltså blir koordinaten för första punkten (80.9 , 58.7). Nästa koordinat blir v = n * 36, dvs 36, 72, 108, osv upp till 360 grader för punkt 10...kanske inte jättebra förklarat men sitter på jobbet så det fick bli en snabb förklaring :-)Sv:Sätta punkter efter vissa vinklar i en cirkel
Säj att jag vill ha fem hål(punkter), då blir det
72
144
216
288
360
Skulle det vara rätt att skriva:
x = 100 * cos( 72 )
y = 100 * sin (72)
x = 100 * cos( 144 )
y = 100 * sin (144) osv?Sv: Sätta punkter efter vissa vinklar i en cirkel
Jag får fram vinklen perfekt men jag kan inte få ut punkterna på rätt sätt, det blir minuskordenationer!
<code>
private void drawDots(double angel)
{
double x = 100 * Math.Cos(angel) ;
double y = 100 * Math.Sin(angel);
double s = 5;
Graphics g = this.CreateGraphics();
Pen pe = new Pen(Color.Black);
SolidBrush mybrush = new SolidBrush(Color.White);
g.FillEllipse(mybrush, (int)x, (int)y, (int)s, (int)s);
g.DrawEllipse(pe, (int)x, (int)y, (int)s, (int)s);
}
</code>
Jag utgår ifrån att jag gör något fel, men vad???
[REDIGERAT]
Genom att ändra lite så får jag scriptet att skriva ut de pluttar jag vill ha..
<code>
double x = 100 * Math.Cos(angel)+122 ;
double y = 100 * Math.Sin(angel)+161;
</code>
..men de blir inte jämnt fördelade. 0 och 360 skall ju vara rakt upp, men det blir den inte.