Visual Basic para Aplicaciones - Poligonos Irregulares

Life is soft - evento anual de software empresarial
 
Vista:

Poligonos Irregulares

Publicado por Erick (1 intervención) el 07/12/2005 23:55:28
No se Como codificar areas en poligonos irreguales, como saben los poligonos irreguales no tiene una formula para obtener el area, es por eso q no se como obtener areas en poligonnos irriguales con "n" numero de vertices.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Poligonos Irregulares

Publicado por Mauricio Baeza (262 intervenciones) el 08/12/2005 16:17:05
Hola, por ahora recuerdo dos metodos...

1.- Descompones el poligono en triangulos, calculas el area de cada triangulo

2.- Usas coordenadas cartesianas, este metodo es muy preciso, lo usamos en topografia

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Poligonos Irregulares

Publicado por frany (36 intervenciones) el 09/12/2005 14:07:37
El segundo metodo de usar las coordenadas cartesianas esta basado en el primero, es decir lo que hace al fin y al cabo es descomponerlos ne triangulos, y hacer la suma.

Revisaré la metodologia ya que tenia un programa para una calculador por ese metodo.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Poligonos Irregulares

Publicado por JuanC (243 intervenciones) el 18/12/2005 12:51:34
/****************************************************
* This program calculates the internal surface of a *
* polygon defined by n points of coordinates: *
* x1, y1, x2, y2,...xn, yn. *
* ------------------------------------------------- *
* Ref.: "Mathématiques en Turbo-Pascal by M. Ducamp *
* and A. Reverchon (vol 2), Eyrolles, Paris, 1988". *
* ------------------------------------------------- *
* SAMPLE RUN: *
* *
* npoints=13 *
* x1=3 y1=3 *
* x2=12 y2=3 *
* x3=12 y3=6 *
* x4=11 y4=6 *
* x5=11 y5=7 *
* x6=15 y6=7 *
* x7=15 y7=9 *
* x8=8 y8=9 *
* x9=8 y9=6 *
* x10=4 y10=6 *
* x11=4 y11=9 *
* x12=3 y12=9 *
* x13=3 y13=3 *
* *
* Surface is: 47.000000 *
* *
* C++ version by J-P Moreau. *
****************************************************/
#include <stdio.h>
#include <math.h>

#define NMAX 50

float s;
int i, npoints;
float buffer[NMAX][NMAX];

void main() {
s=0;
npoints=13; //13 points
//init buffer x(i), y(i) }
for (i=1; i<=npoints; i++) {
buffer[1][1]= 3; buffer[1][2]=3;
buffer[2][1]=12; buffer[2][2]=3;
buffer[3][1]=12; buffer[3][2]=6;
buffer[4][1]=11; buffer[4][2]=6;
buffer[5][1]=11; buffer[5][2]=7;
buffer[6][1]=15; buffer[6][2]=7;
buffer[7][1]=15; buffer[7][2]=9;
buffer[8][1]= 8; buffer[8][2]=9;
buffer[9][1]= 8; buffer[9][2]=6;
buffer[10][1]=4; buffer[10][2]=6;
buffer[11][1]=4; buffer[11][2]=9;
buffer[12][1]=3; buffer[12][2]=9;
buffer[13][1]=3; buffer[13][2]=3;
}
//calculate internal surface
for (i=1; i<npoints; i++) {
s+=(buffer[i][1]+buffer[i+1][1])*(buffer[i][2]-buffer[i+1][2]);
}
s=(float) (fabs(s)/2);
//print surface
printf("\n Surface is: %f\n\n\n",s);
}

// end of file surface.cpp
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Poligonos Irregulares

Publicado por _frany_ (36 intervenciones) el 18/12/2005 14:59:45
Aparte de C lo tienes en VBAsic?

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Poligonos Irregulares

Publicado por JuanC (243 intervenciones) el 18/12/2005 18:47:12
no, pero no me parece tan dificil para traducir, por eso lo puse en C
si tengo tiempo lo traduzco y lo publico
saludos JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

version VBA del codigo que publique antes en C

Publicado por JuanC (243 intervenciones) el 18/12/2005 19:42:46
Const NMAX = 50

Sub main()
Dim s As Double
Dim i As Integer, npoints As Integer
Dim buffer(1 To NMAX, 1 To NMAX) As Double

s = 0
npoints = 13

buffer(1, 1) = 3: buffer(1, 2) = 3
buffer(2, 1) = 12: buffer(2, 2) = 3
buffer(3, 1) = 12: buffer(3, 2) = 6
buffer(4, 1) = 11: buffer(4, 2) = 6
buffer(5, 1) = 11: buffer(5, 2) = 7
buffer(6, 1) = 15: buffer(6, 2) = 7
buffer(7, 1) = 15: buffer(7, 2) = 9
buffer(8, 1) = 8: buffer(8, 2) = 9
buffer(9, 1) = 8: buffer(9, 2) = 6
buffer(10, 1) = 4: buffer(10, 2) = 6
buffer(11, 1) = 4: buffer(11, 2) = 9
buffer(12, 1) = 3: buffer(12, 2) = 9
buffer(13, 1) = 3: buffer(13, 2) = 3

For i = 1 To npoints - 1
s = s + (buffer(i, 1) + buffer(i + 1, 1)) * (buffer(i, 2) - buffer(i + 1, 2))
Next

s = Abs(s) / 2

MsgBox s
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:version VBA del codigo que publique antes en C

Publicado por frany (36 intervenciones) el 21/12/2005 21:45:05
Muchas gracias JuanC
La anotaré para mi coleccion de rutinas.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:version VBA del codigo que publique antes en C

Publicado por frany (36 intervenciones) el 21/12/2005 21:48:45
Onservo por el codigo que ambos lenguajes tienen cierto parecido verdad
aunque nunca he programado en C ya que lo considero muy dificil , veo que el VBA se le acerca aunque no le alcanza jeje.

Es dificil saltar de Vba al C? es mi asignatura pendiente , bueno esa y el asemblel jajaja
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:version VBA del codigo que publique antes en C

Publicado por JuanC (243 intervenciones) el 22/12/2005 11:31:50
la cuestión es saber programar, el lenguaje es lo de menos...
yo en realidad pasé del C/C++ al VB/VBA
el C es otra cosa! te lo recomiendo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:version VBA del codigo que publique antes en C

Publicado por frany (36 intervenciones) el 22/12/2005 22:02:36
Lo mio creo que no tiene remedio.

Yo comencé con mi añorado ZX Spectrum alla por el 82 y he pasado de su tosco basic al basic del pc, Basica., Qbasic, VBasic (dichosos botoncitos), VBA para excel y ahora estoy liado con VBA para autocad y su interaccion con Excel. pero todo todo de forma autonoma, es decir a pelo sin cursos ni nada, es que la programacion no fue mi pasion , sino la construccion y el uso del ordenador una herramienta, ya que la programacion por programacion la he visto muy compleja como para hacer la carrera. y en fin lo poquito que mas o menos se lo intento aplicar a la construccion .

Bueno despues de esta parrafada entenderas porque no puedo meterme con el C, porque aunque sé que es lo mejor que hay en programacion de alto nivel siempre lo he visto como algo complejo y veo el Basic mas factible para mis pretenciones.

De todas formas, si que me gustaria aprender algo , pues para la recursion es mejor que basic, ademas que es un verdadero lenguaje orientado a objetos verdad.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar