Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 02-05-2006
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 22
[Gunman] Va por buen camino
Bueno, os voy a proporcionar más información, que eso nunca viene mal para resolver un problema. Pensé que no seria necesaria, pero quizás paso algo por alto y no quiero perder tiempo...
Bueno, he hecho un programa para aproximarte al valor del número PI. Básicamente se basa en la probabilidad. Si tenemos un cuadrado de lado dos y inscribimos una circumferencia en el, el área del cuadrado será 4 (2^2) y la del círculo PI (PI·1^2). Entonces, si hacemos un punto al azar en el cuadrado, la probabilidad de que caiga en el círculo es de PI/4. Bueno, podéis buscar en el google "método montecarlo".
Entonces, cada vez que se elige al azar las coordenadas del punto que se va a pintar, como no, lo pinta (esto no es necesario, pero queda chulo) y ahí está el problema, que al pintar los puntos y pasar una ventana por encima me borra los puntos!
No puedo repintar cada vez, porque en alguna ocasión deberia repintar 9999999 puntos y en la siguiente esos más uno, y así sucesivamente.
En vez de hacerlo en el canvas del form he probado con un PaintBox y tengo el mismo problema. Con un TImage no me pinta el punto cada vez. No se que hacer...
Bueno, pongo el código del programa (sólo lo que nos interesa):
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Point: TPoint;
  I, Counter, Max: Integer;
begin
  Form1.Canvas.Ellipse(0,0,400,400);
  Counter := 0;
  Max := StrToInt(FloatToStr(JvSpinEdit1.Value));
  for I := 1 to Max do
  begin
    Randomize;
    Point.X := Random(400);
    Randomize;
    Point.Y := Random(400);
    if CheckPoint(PointToModPoint(Point)) = True then
    begin
      Counter := Counter+1;
      Form1.Canvas.Pixels[Point.X, Point.Y] := clRed;
    end
    else
      Form1.Canvas.Pixels[Point.X, Point.Y] := clBlue;
    Label2.Caption := Format('Tirs: %d || Encerts: %d', [I, Counter]);
    Label2.Repaint;
  end;
  ShowMessage(FloatToStr((Counter/Max)*4));
end;
__________________
l2prog.co.nr
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consume memoria, se porque, pero no se como evitarlo... sostro SQL 11 20-03-2007 16:01:43
¿Como imprimir con el canvas ? judoboy Impresión 7 16-09-2006 16:27:22
Como Borra exclusivamente una fila en un String Grid mgaray Varios 1 14-03-2005 22:06:57
como se borra 1 indice con sql User_Baja_2 Conexión con bases de datos 1 23-06-2003 08:04:49
Intentarlo excepto si podemos evitarlo roman Debates 12 26-05-2003 01:03:30


La franja horaria es GMT +2. Ahora son las 01:51:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi