In Python einen Kreis um einen anderen drehen?

3 Antworten

Ich würde so ran gehen, dass man ein kleinen und einen großen Kreis, der die Mitte der 0 Punkt ist zeichen würde. Der große Kreis würde ich für den Mittelpunkt für den kleinen (in dem Bild schwarzen) Kreis ist.

(Ich würde es auch mit einer GUI Labrary wie pygame oder turte machen)

Also ein Beispiel. 5cm kleiner Kreisradius, 8cm großer Kreisradius. Dann würde ich ein Punkt von dem großen Kreis nehmen und dort je ein 3cm großen Kreis zeichnen. Jetzt kann man mit einer for schleife jeden Punkt nehmen und dann den kleinen Kreis zeichnen.

Hier wäre eine Skizze.

Bild zum Beitrag

Ich hoffe du konntest es verstehen und wenn du Fragen hast, oder es möchtest, dass ich dir ein Beispielprogramm programmieren soll kannst du es mir einfach schreiben.

Woher ich das weiß:Hobby
 - (programmieren, Informatik, Python)
kl4ry 
Fragesteller
 29.08.2022, 16:15

Vielen Dank, das ist schonmal ein guter Ansatz :) Wie würde denn so ein Beispielprogramm aussehen?

1
Hanibal545  29.08.2022, 16:34
@kl4ry

Würde es halt mal mit Pygame (eigentlich um Spiele zu entwickeln) (turtle ist glaub ich besser, aber ich kenn mich eher mit Pygame aus) ein Beispielprogramm schreiben, sodass du ein Eindruck dafür gewinnst

2

Hallo,

folgender Python-Code mit der Pygame Library sollte funktionieren. Es werden die Punkte berechnet, die als Mittelpunkte des kleineren Kreises dienen. Jedes Mal, wenn der Kreis gezeichnet wird, wird der nächste Punkt als neuer Mittelpunkt gewählt. Je mehr Punkte du hast, desto langsamer bewegt sich der kleinere Kreis.

Ich hoffe ich konnte helfen.

import pygame
import math

WIDTH = 800
HEIGHT = 800
RADIUS_CIRCLE_1 = 100
RADIUS_CIRCLE_2 = 50
POINTS = 200
START_POSITION = 0

points = []

def calculatePoints():
    #Calculates all points of the center position of the smaller circle
    increment = 360/POINTS
    for i in range(POINTS):
        angle = i*increment
        x = WIDTH/2 + math.cos(math.radians(angle))*(RADIUS_CIRCLE_1+RADIUS_CIRCLE_2)
        y = HEIGHT/2 + math.sin(math.radians(angle))*(RADIUS_CIRCLE_1+RADIUS_CIRCLE_2)
        points.append([x, y])

def drawCircles(win):
    global START_POSITION
    #Draw the center circle
    pygame.draw.circle(win, (0,0,255), (WIDTH/2, HEIGHT/2), RADIUS_CIRCLE_1, 3)
    #Draw the smaller circle
    pygame.draw.circle(win, (0,0,0), points[START_POSITION], RADIUS_CIRCLE_2, 3)
    #+= 1 -> Move clockwise, -= 1 -> Move counterclockwise
    START_POSITION += 1
    if START_POSITION == POINTS-1 or START_POSITION == -POINTS-1:
        START_POSITION = 0

calculatePoints()

def main():
    win = pygame.display.set_mode((WIDTH, HEIGHT))
    clock = pygame.time.Clock()
    run = True
    while run:
        clock.tick(30)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                break

        win.fill((255, 255, 255))
        drawCircles(win)
        pygame.display.flip()

    pygame.quit()

if __name__ == "__main__":
    main()
Woher ich das weiß:Hobby

Nein hatte ich noch nicht, ich würde erstmal mathematisch schauen wie man beide Kreise und dann die Positionen von diesen ausrechnet, soll ja variabel sein. Dann schauen vermutlich tkinter (gui library für python) nutzen zum Zeichnen der Kreise. Wenn ich nachher Zeit habe und es noch keine gute Antwort gab schaue ich mal genauer nach

Woher ich das weiß:Hobby – Ich Programmiere seit 3,5 Jahren mit Python
Hanibal545  28.08.2022, 20:04

Ich hätte glaub eher andere GUI Librarues verwendet. Z.b. Turtle oder Pygame. Oder was denkst du?

0