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