FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Graficar superficies en 3d
Hola,
¿Cómo puedo graficar superficies o mapas a partir de datos en 3 coordenadas (x, y, z)? Gracias |
#2
|
|||
|
|||
te dejo un ejemplo para graficar funciones. Como ves, esta sacando las z de una funcion. Si tu creas un array donde colocas tu mapa de valores, entonces solo tendras q hacer z := mapa[x][y]; Esta funcion por eso es muy simple: pierde escala, etc... deberàs usar normalizadores varios (factores q multipliquen a las x e y en i,j) para tener una proyeccion más correcta.
me entretengo a ver si saco lo mismo con un array... |
#3
|
|||
|
|||
Gracias, pero estoy programando en Builder c++ 6. De todas formas voy a ver cuales funciones me sirven.
|
#4
|
|||
|
|||
bueno la traduccion es sencilla. Saludos.
Última edición por coso fecha: 21-06-2008 a las 10:53:08. |
#5
|
|||
|
|||
graficar en 3d
Hola Amigo del foro, esto hice una vez. lo saque de navegar por internet y fui agregando cosas a mi modo, lo que hace este programa, es una funcion en 2d SIMPLE Y SENCILLA (1RO) .
(2DO) hago una funcion en 3D,con el concepto de que una figura en 3d se arma a partir de la suma de los planos la misma funcion en (x,y) , en (z,x) y (z,y) y las muestro por separadas(a estos planos) y por ultimo uno los 3 planos para mostrarlo ( podes con el ScrollBar ROTAR Y GIRARLO). Soy principiante en el tema pero por esas cosas de la vida te puede servir. Saludos. BC++ te dejo el codigo, lo unico q tenes q hacer es poner en el form. TImages y botones //----------------------CODIGO------------------------------------------- //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <math.h> #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- double f(double ,double ); void __fastcall TForm1::Button1Click(TObject *Sender) { //ejemplo para 2d grafico unicamente los ejes int Maxx=Image->Width; int Maxy=Image->Height; //Traza el eje X Image->Canvas->MoveTo(0,Maxy/2); Image->Canvas->LineTo(Maxx,Maxy/2); //Traza el eje Y Image->Canvas->MoveTo(Maxx/2,0); Image->Canvas->LineTo(Maxx/2,Maxy); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { //grafico un seno, y lo superpongo sobre el eje x,y q cree en el boton de arriba int Maxx=Image->Width; int Maxy=Image->Height; //Traza el eje X Image->Canvas->MoveTo(0,Maxy/2); Image->Canvas->LineTo(Maxx,Maxy/2); //Traza el eje Y Image->Canvas->MoveTo(Maxx/2,0); Image->Canvas->LineTo(Maxx/2,Maxy); //Declarando funciones que van a ser utilizadas float x,y,var=0.01,xini=-10,xfin=10,posx,posy; //Graficando la función en si for(x=xini;x<xfin;x+=var) { y=sin(x); posx=x*Maxx/(xfin-xini); posy=y*Maxx/(xfin-xini); Image->Canvas->Pixels[Maxx/2+posx][Maxy/2-posy]=clRed; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { int Maxx=Image1->Width; int Maxy=Image1->Height; //Traza el eje X Image1->Canvas->MoveTo(0,Maxy/2); Image1->Canvas->LineTo(Maxx,Maxy/2); //Traza el eje Y Image1->Canvas->MoveTo(Maxx/2,0); Image1->Canvas->LineTo(Maxx/2,Maxy); //Declarando funciones que van a ser utilizadas float x,y,z,var=0.1,xini=-10,xfin=10,posx,posy; //Graficando la función en si for(x=xini/3;x<xfin/3;x+=var) { for(z=xini/3;z<xfin/3;z+=var) { y=f(x,z);//y=sin(x)+z; //Llamada a una función ya definida posx=x*Maxx/(xfin-xini); posy=y*Maxx/(xfin-xini); Image1->Canvas->Pixels[Maxx/2+posx][Maxy/2-posy]=clRed; posx=x*Maxx/(xfin-xini); posy=z*Maxx/(xfin-xini); Image2->Canvas->Pixels[Maxx/2+posx][Maxy/2-posy]=clRed; posx=y*Maxx/(xfin-xini); posy=z*Maxx/(xfin-xini); Image3->Canvas->Pixels[Maxx/2+posx][Maxy/2-posy]=clRed; } } } //-------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { int Maxx=Image1->Width; int Maxy=Image1->Height; Image4->Canvas->Pen->Color = clWhite; Image4->Canvas->FillRect(Rect(0,0,Maxx,Maxy)); Image4->Canvas->Pen->Color = clBlack; float Elev=ScrollBar1->Position*(2*M_PI)/100; float Giro=ScrollBar2->Position*(2*M_PI)/100; float x,y,z,var=0.1,xini=-10,xfin=10,posx,posy,x2D,y2D; for(x=xini/3;x<xfin/3;x+=var) { for(z=xini/3;z<xfin/3;z+=var) { y=f(x,z); x2D= x*cos(Elev)-z*sin(Elev); y2D=-x*sin(Elev)*sin(Giro)+y*cos(Giro)-z*cos(Elev)*sin(Giro); posx=x2D*Maxx/(xfin-xini); posy=y2D*Maxx/(xfin-xini); Image4->Canvas->Pixels[Maxx/2+posx][Maxy/2-posy]=clGreen+clBlue; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::ScrollBar1Change(TObject *Sender) { Button5Click(this); } //--------------------------------------------------------------------------- void __fastcall TForm1::ScrollBar2Change(TObject *Sender) { Button5Click(this); } //--------------------------------------------------------------------------- double f(double x,double z) { return sin(x*x+z)*exp(x); //return sqrt(z*z+x*x)*sin(x*x); } void __fastcall TForm1::Button4Click(TObject *Sender) { int Maxx=Image1->Width; int Maxy=Image1->Height; //Traza el eje X Image1->Canvas->MoveTo(0,Maxy/2); Image1->Canvas->LineTo(Maxx,Maxy/2); //Traza el eje Y Image1->Canvas->MoveTo(Maxx/2,0); Image1->Canvas->LineTo(Maxx/2,Maxy); //Declarando funciones que van a ser utilizadas float x,y,var=0.01,xini=-10,xfin=10,posx,posy; //Graficando la función en si for(x=xini;x<xfin;x+=var) { y=sin(x); posx=x*Maxx/(xfin-xini); posy=y*Maxx/(xfin-xini); Image1->Canvas->Pixels[Maxx/2+posx][Maxy/2-posy]=clBlue; } } //------------------------------------------------------------------------ //------------------------------------------------------------------------ SUERTE!! pD: Si alguno conoce la direccion Web de este codigo tendria que agregarlo, yo no me acuerdo lamentablemente. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Graficar vía API Google | MAXIUM | Varios | 0 | 20-05-2008 17:15:33 |
Graficar Funciones | jack10 | C++ Builder | 6 | 18-06-2007 21:12:26 |
Graficar lineas | bosterito | Gráficos | 1 | 13-02-2007 17:13:57 |
¿Grandes superficies pequeños cerebros? | marcoszorrilla | La Taberna | 11 | 04-10-2006 08:13:25 |
Graficar En 3d En Delphi | jose_2057111 | Gráficos | 1 | 26-11-2004 09:33:05 |
|