Red de conocimiento informático - Problemas con los teléfonos móviles - VB escribe gráficos para rotar alrededor de un punto

VB escribe gráficos para rotar alrededor de un punto

Funciones seno y coseno

Título: Se sabe que un eje mayor es len, y las coordenadas del punto final del otro eje mayor (x1, y1) y (x2, y2)

Dibuja una elipse.

Pasos del algoritmo:

1 Encuentra a,b: a=len/2 b=sqr((x1-x2)^2+(y1-y2)^2) <. /p>

2. Encuentra el ángulo de rotación α: Encuentra el arco tangente de (y1-y2)/(x1-x2) que es α

3. y0 ): x0=(x1+x2)/2 y0=(y1+y2)/2

3 Calcula las coordenadas (x, y) del punto de la elipse:

x= acosθ, y=bsinθ (0<=θ< 2*π)

4 Calcula las coordenadas (xx, yy) después de rotar la gráfica alrededor del origen en α radianes:

xx=x *cos(-α )+y*sin(-α )

yy=-x*sin(-α )+y*cos(-α )

5. Calcular elipse Las coordenadas del punto en la elipse (xxx, yyy) después del centro se trasladan del origen a (x0, y0):

xxx=xx+x0

yyy=yy+y0

6. Dibuja un punto en las coordenadas (xxx, yyy)

7. π), tome valores en ciertos intervalos y repita de 3 a 7 pasos para obtener la elipse requerida.

El siguiente es el código VB. Cree un nuevo proyecto estándar sin realizar ningún cambio de parámetros. Abra la ventana de código, pegue el código, reemplace todo el código original y ejecútelo para ver el efecto.

Espero que te sea útil

Opción explícita

Atenuar X1, Y1, X0, Y0, X2, Y2 como doble

Atenuar A, B, PI como Doble

Dim F como booleano

Sub privado Form_Load()

PI = 3.14159265358979

F = Falso

DrawWidth = 2

Ancho = 10000

Alto = 8000

End Sub

Sub privado Form_MouseDown(Botón como entero, Mayús como Entero, X como único, Y como único)

X1 = X

Y1 = Y

B = 1000

F = Verdadero

p>

End Sub

Public Sub tuoYuan()

Atenuar Jiao como doble

Atenuar i, m, n, m1, n1 Como Doble

Cls

X0 = (X1 + X2) / 2

Y0 = (Y1 + Y2) / 2

A = Sqr( (X0 - X2) ^ 2 + (Y0 - Y2) ^ 2)

Si X1 <> X2 Entonces

Jiao = Atn((Y1 - Y2) / (X1 - X2 ))

Else

Jiao = PI / 2

End If

Form1.PSet (X1, Y1) , RGB(255, 0, 0)

Form1.PSet (X0, Y0), RGB(255, 0, 0)

Form1.PSet (X2, Y2), RGB (255, 0 , 0)

Para i = 0 A PI * 2 Paso 0.01

m = A * Cos(i)

n = B * Sin(i)

'Form1.PSet (m + X0, n + Y0), RGB(255, 0, 0)

m1 = m * Cos(-Jiao) + n * Sin( -Jiao)

n1 = -m * Sin(-Jiao) + n * Cos(-Jiao)

Form1.PSet (m1 + X0, n1 + Y0 ), RGB( 0, 255, 0)

Siguiente i

End Sub

Sub privado Form_MouseMove(Botón como entero, Mayús como entero, X como único , Y como único )

Si F = Verdadero entonces

X2 = X

Y2 = Y

Llame a tuoYuan

Finalizar si

End Sub

Sub privado Form_MouseUp(Botón como entero, Mayús como entero, X como único, Y como único) <

/p>

F = False

X2 = X

Y2 = Y

Llamar a tuoYuan

End Sub