1

有创建椭圆的代码,但现在我需要创建一个动画,其中点将沿着 eptical 线移动。我还需要更改代码,因为我需要使用 input() 函数输入椭圆的半径,并可能使用 scatter 函数在椭圆中心绘制点。

import math  # papildus aprēķiniem
import numpy as np  # matricas datu apstrādei
import matplotlib.pyplot as plt  # grafiku attēlošanai

img = np.ones((200, 800, 3))  # attēls, augstums, platums, kanālu skaits jeb RGB


def DrawEllipse(xc, yc, rx, ry):
    # xc, yc - elipses centra koordinātes
    # rx, ry - lielāka un mazāka pusass
    xk = 0  # sākotnējās x un y koordinātes
    yk = ry

    # -----------1.daļa
    pk = ry ** 2 - rx ** 2 * ry + 1 / 4 * rx ** 2  # risinošā parametra vērtība

    img[xc + xk, yc + yk] = 0  # zīmējam sākotnejās koordinātes 4 kvadrantiem
    img[xc - xk, yc + yk] = 0
    img[xc + xk, yc - yk] = 0
    img[xc - xk, yc - yk] = 0

    while ry ** 2 * xk < rx ** 2 * yk:
        xk += 1  # vai xk=xk+1
        if pk > 0:  # vidējais punkts atrodas ārpus elipses līnijas
            yk -= 1  # vai yk=yk-1
            pk = pk + 2 * ry ** 2 * xk + ry ** 2 - 2 * rx ** 2 * yk
        else:  # vidējais punkts atrodas elipses līnijas iekšā vai uz tās
            pk = pk + 2 * ry ** 2 * xk + ry ** 2
            # zīmējam elipses koordinātes
        img[xc + xk, yc + yk] = 0  # zīmējam sākotnejās koordinātes 4 kvadrantiem
        img[xc - xk, yc + yk] = 0
        img[xc + xk, yc - yk] = 0
        img[xc - xk, yc - yk] = 0
    # --------2.daļa -> izpildam paši

    pk = ry ** 2 * (xk + 1 / 2) ** 2 + rx ** 2 * (yk - 1) ** 2 - (rx ** 2 * ry ** 2)  # otrs moteicošais parametrs

    img[xc + xk, yc + yk] = 0  # zīmējam sākotnejās koordinātes 4 kvadrantiem
    img[xc - xk, yc + yk] = 0
    img[xc + xk, yc - yk] = 0
    img[xc - xk, yc - yk] = 0

    while yk > 0:
        yk -= 1
        if pk > 0:
            pk = pk - 2 * rx ** 2 * yk + rx ** 2
        else:
            xk += 1
            pk = pk - 2 * rx ** 2 * yk + rx ** 2 + 2 * ry ** 2 * xk
        img[xc + xk, yc + yk] = 0  # zīmējam sākotnejās koordinātes 4 kvadrantiem
        img[xc - xk, yc + yk] = 0
        img[xc + xk, yc - yk] = 0
        img[xc - xk, yc - yk] = 0

        # pk=ry**2-rx**2*ry+1/4*rx**2 #risinošā parametra vērtība Formulu/tikai cita
        # while
        # yk -=1

        return

DrawEllipse(100, 50, 50, 25)

plt.figure(figsize=(10, 8), dpi=100, facecolor='w')
plt.imshow(img)
plt.show()

在此处输入图像描述

4

0 回答 0