Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
01.08.2001, 19:50
Seeker



Also: Ich möchte einen Kreis in einem Koordinatensystem in beliebig viele Teile aufteilen und mir denn die einzelnen Koordinaten vorrechnen lassen. Hier die Details:

Gegeben:
X sei die Anzahl der Teilabschnitte auf dem Kreis
(x, y) bestimmt die Position des Kreises im Koordinatensystem
r ist der Radius

Der Kreis soll nun in X gleichmäßige Teile aufgeteilt werden. (Wie eine Torte)
Ich benötige die EXAKTE Koordinate jedes Schnittpunkts auf der Kreislinie.

Ich habe also zunächst den Umfang des Kreises berechnet:
U = 2pi * r
Den teile ich dann durch X (und nenne einen Teilabschnitt Y)
Y = U / X
So. Aber wie stelle ich das jetzt weiter an? Ich hab keine Lust in den Ferien meinen Mathelehrer anzurufen, also brauche ich eure Hilfe. Es klingt theoretisch ganz einfach, nur hab ich sowas noch NIE in der Schule gemacht (Wir spielen noch mit Zirkeln ´rum und messen die Abstände dann aus [9. Klasse]!!!).

Hoffe, mir kann jemand helfen
Seeker

--

zum Seitenanfang zum Seitenende Profil || Suche
001
01.08.2001, 20:37
Mazze



Wenn der Mittelpunkt des Kreises die Mitte des Koordinatensystems ist, also M(Kreis) = (0/0)
Dann kannst du ja schonmal so anfangen, dass oben (0/Radius) ist!
Bei 4 Teilen ist's ja einfach:
1. Teil: von (0/r) bis (r/0)
2. Teil: von (r/0) bis (0/-r)
3. Teil: von (0/-r) bis (-r/0)
4. Teil: von (-r/0) bis (0/r)

Bei 8 Teilen ist es auch einfach, weil da x und y gleich groß sind: Nimm einfach den Satz des Pythargoras!
Bei einer anderen Anzahl von Teilen ist's wohl nicht so einfach!
Vielleicht musst du das irgendwie mit Grad-Zahlen machen!

Naja....ich hoffe das war ein Denkansatz!
Ich bin auch erst in der 9. Klasse und ich habe noch gar keine Berechnung von Kreisen gehabt!

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
002
01.08.2001, 22:46
tommsch



n..anzahl der teilungen
d..durchmesser des kreises

alpha = 360/n

x = cos(alpha)*d
y = sin(alpha)*d

--

"Wenn schon Sklave, dann überzeugter Sklave" - Steindl über techn. Zeichner

zum Seitenanfang zum Seitenende Profil || Suche
003
02.08.2001, 13:40
Seeker



Puuh.
@Mazze: Hab das auch noch nicht gehabt, hab mich aber ein bisserl privat weitergebildet ;-))
@tommsch: Puh. Hatte noch keine Gelegenheit, das zu testen aber es klingt sehr logisch ;-)) Welche Klasse bist du?

--

zum Seitenanfang zum Seitenende Profil || Suche
004
02.08.2001, 18:58
Seeker



Tja, klang logisch, klappt aber nicht:
1. statt d meinst du sicher r, den Radius

Also; so sieht mein Quelltext aus:
A ist eine Picturebox
StartX und StartY sind der Kreismittelpunkt
Radius wird vorher ausgerechnet...

Quellcode:
    A.Circle (StartX, StartY), Radius, vbWhite
    m = Text1.Text 'Das ist die Anzahl der Teile
    For n = 1 To m
    beta = 360 / m
    alpha = beta * n
    RelY = Cos(alpha) * Radius
    RelX = Sin(alpha) * Radius
    A.Circle (StartX + RelX, StartY + RelY), 40, vbRed
    A.Print al & "°"
    Next n

Er malt auch alles wunderbar - nur leider werden die Kreise zwar auf dem weißen Ring, nicht aber in den Richtigen Abständen angezeigt...
Wenn ich zum Beispiel 10 Teile eingebe müste doch jedes Stück 36° in Anspruch nehmen - in Wirklichkeit verwendet er aber etwa 100°! Was hab ich da falsch gemacht??

--

zum Seitenanfang zum Seitenende Profil || Suche
005
02.08.2001, 22:10
Prefect



Wenn ich das hier richtig sehe, verwendest du nen konstanten Radius. D.h. wenn sich das Programm richtig verhält, müßten auf der Kreislinie des größeren Kreises 10 Kreise in gleichmässigem Abstand entstehen.
Ob sich die Kreise überschneiden oder nicht ist ne andere Sache.

Wenn du willst, dass sich die Kreise genau berühren, mußt du zunächst den dafür notwendigen Radius berechnen.

Ich würde jetzt hier ganz gern ne Skizze machen, aber im Text geht das leider nicht, also versuch ich das mit Worten beschreiben.

Du hast den großen Kreis, und darin eingezeichnet ein Segment. Der Winkel beim Mittelpunkt sei Alpha = 360° / n

Wenn du jetzt die beiden Punkte des Segmentes auf der Kreislinie verbindest erhältst du ein gleichschenkliges Dreieck aus den beiden Radien r und der Verbindungslinie c. Es gilt, die Länge der Linie c zu finden, oder genauer gesagt c/2, da der Radius der kleineren Kreise = c/2 sein soll.

Also halbiere c/2 und errichte das Lot. Dadurch kriegst du zwei identische rechtwinklige Dreiecke. Der spitze Winkel am Zentrum des großen Kreises ist Alpha/2. Wir wissen (je nach Schulklasse ;), dass in den kleineren Dreiecken der Radius r die Hypothenuse und c/2 die Gegenkathete zu Winkel Alpha/2 ist.

Außerdem: sin Winkel = Gegenkathete / Hypothenuse
Also: sin(a/2) = (c/2)/r
oder, anders formuliert: c/2 = r*sin(a/2)
c/2 ist dann der Radius der kleineren Kreise.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
006
02.08.2001, 23:13
Gollum



ich glaub die sin und cos funktionen wollen den winkel nicht in grad sondern in radians wissen.
wenn du den winkel in grad mal pi/180 rechnest kommst du auf radians -

andererseits weiß ich nicht ob das in vb überhaupt so is... bei den funktionen sin/cos aus math.h von c is jedenfalls so...

jo. ich hoffe ich konnte auch irgendwie helfen :) cu

--

[url="http://www.thelordoftherings.com/cgi-bin/get-image.pl?ID=alan-lee-058 "]-N/A-[/url]
[url="http://www.microsoft.com/germany/ms/unternehmensinformationen/historie.htm "]Mean cats eat parakeets![/url]

zum Seitenanfang zum Seitenende Profil || Suche
007
02.08.2001, 23:28
tommsch



in vb sind alle winkel radiant, (hat gollum eh scho gschriebn)
ich geh 2. htl und komm jetzt 3., nehm an das is in deutschland 10 u. 11 schulstufe

--

"Wenn schon Sklave, dann überzeugter Sklave" - Steindl über techn. Zeichner

zum Seitenanfang zum Seitenende Profil || Suche