Autor
Tema: Movimiento armónico simple [SOLUCIONADO] (Leído 2,449 veces)
Meta
Hola:
Hace siglos que quice hacerlo pero no me salió. añado en el Windows Form un pictureBox, ahí dentro creo dos rayas, una vertical y otra horizontal con el círculo en medio, tal como indica la imagen de abajo.
Los puntos que muestran se tiene que mover tal como lo hace en el vídeo de abajo.
Ver vídeo.
VIDEO Código hasta ahora.
using System ;
using System.Collections.Generic ;
using System.ComponentModel ;
using System.Data ;
using System.Drawing ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
using System.Windows.Forms ;
namespace Movimiento_armonico_simple_01_cs
{
public partial class Form1 : Form
{
private int pt1a = 0 , pt2y = 300 , pt2s = - 1 , pt3x = 80 , pt3s = 1 ;
private void Form1_Load( object sender, EventArgs e)
{
timer1. Start ( ) ;
}
private void pictureBox1_Paint( object sender, PaintEventArgs e)
{
Graphics g = e. Graphics ;
int ptx, pty;
g. Clear ( Color. White ) ;
g
. DrawEllipse ( Pens
. Black ,
new Rectangle
( 40 ,
40 ,
300 ,
300 ) ) ; g. DrawLine ( Pens. Black , 20 , 40 , 20 , 340 ) ;
g. DrawLine ( Pens. Black , 40 , 360 , 340 , 360 ) ;
ptx = ( int ) ( Math. Cos ( ( double ) pt1a * Math. PI / 180.0 ) * 150.0 ) ;
pty = ( int ) ( Math. Sin ( ( double ) pt1a * Math. PI / 180.0 ) * 150.0 ) ;
g
. FillEllipse ( Brushes
. Black ,
new Rectangle
( 190 + ptx
- 5 ,
190 - pty
- 5 ,
11 ,
11 ) ) ;
g
. FillEllipse ( Brushes
. Black ,
new Rectangle
( 15 , pt2y
- 5 ,
11 ,
11 ) ) ;
g
. FillEllipse ( Brushes
. Black ,
new Rectangle
( pt3x
- 5 ,
355 ,
11 ,
11 ) ) ; }
private void timer1_Tick( object sender, EventArgs e)
{
pt1a += 2 ;
if ( pt1a >= 360 )
pt1a -= 360 ;
pt2y += 4 * pt2s;
if ( pt2y <= 40 || pt2y >= 340 )
pt2s = - pt2s;
pt3x += 4 * pt3s;
if ( pt3x <= 40 || pt3x >= 340 )
pt3s = - pt3s;
pictureBox1. Invalidate ( ) ;
}
public Form1( )
{
InitializeComponent( ) ;
}
}
}
¿Alguna idea?
Saludos.
« Última modificación: 1 Agosto 2020, 13:21 pm por Meta »
En línea
Meta
Hola:
Hecho.
using System ;
using System.Drawing ;
using System.Windows.Forms ;
namespace Movimiento_armonico_simple_01_cs
{
public partial class Form1 : Form
{
private int pt1a = 0 ;
private void timer1_Tick( object sender, EventArgs e)
{
pt1a += 2 ;
if ( pt1a >= 360 )
pt1a -= 360 ;
pictureBox1. Invalidate ( ) ;
}
private void Form1_Load( object sender, EventArgs e)
{
timer1. Start ( ) ;
}
private void pictureBox1_Paint( object sender, PaintEventArgs e)
{
Graphics g = e. Graphics ;
int ptx, pty;
g. Clear ( Color. White ) ;
g
. DrawEllipse ( Pens
. Black ,
new Rectangle
( 40 ,
40 ,
300 ,
300 ) ) ; g. DrawLine ( Pens. Black , 20 , 40 , 20 , 340 ) ;
g. DrawLine ( Pens. Black , 40 , 360 , 340 , 360 ) ;
ptx = ( int ) ( Math. Cos ( ( double ) pt1a * Math. PI / 180.0 ) * 150.0 ) ;
pty = ( int ) ( Math. Sin ( ( double ) pt1a * Math. PI / 180.0 ) * 150.0 ) ;
// Punto del círculo.
g
. FillEllipse ( Brushes
. Black ,
new Rectangle
( 190 + ptx
- 5 ,
190 - pty
- 5 ,
11 ,
11 ) ) ;
// Punto de la recta Y.
g
. FillEllipse ( Brushes
. Black ,
new Rectangle
( 15 ,
190 - pty
- 5 ,
11 ,
11 ) ) ;
// Punto de la recta X.
g
. FillEllipse ( Brushes
. Black ,
new Rectangle
( 190 + ptx
- 5 ,
355 ,
11 ,
11 ) ) ;
label_X. Text = "X:" + ptx. ToString ( ) ;
label_Y. Text = "Y:" + pty. ToString ( ) ;
}
public Form1( )
{
InitializeComponent( ) ;
}
}
}
Saludos.
En línea
Mensajes similares
Asunto
Iniciado por
Respuestas
Vistas
Último mensaje
Ayuda calculadora simple en PHP(solucionado)
PHP
Senior++
2
3,746
16 Noviembre 2013, 18:20 pm
por Senior++
[Solucionado] Problema con simple código en C++
Programación C/C++
Mario Olivera
1
2,044
14 Agosto 2014, 21:57 pm
por Eternal Idol
[Solucionado] -seguridad en chat simple
« 1 2 »
Programación Visual Basic
elezekiel
15
6,975
1 Noviembre 2014, 04:11 am
por engel lex
Constructor de movimiento y asignacion de movimiento
Programación C/C++
AnthonyS
2
2,142
1 Marzo 2017, 19:32 pm
por AnthonyS
Movimiento simple de un hexápodo
Programación C/C++
JoseRomero
0
1,253
5 Octubre 2018, 20:48 pm
por JoseRomero