28.12.2014, 00:17
Para empezar tienes que saber que: un polнgono es una figura plana compuesta por una secuencia finita de segmentos rectos consecutivos que cierran una regiуn en el plano.
Es decir, una cantidad de segmentos rectos que se juntan por los extremos y encierran una superficie llamada бrea. Dependiendo de la cantidad de segmentos, nuestro polнgono recibirб distintos nombres (triбngulo, pentбgono, octбgono, etc.).
Entonces, concluyo que un polнgono ha de tener mнnimo tres lados para poder encerrar una superficie.
[*] Por ejemplo:
Esta figura es un polнgono de cuatro lados, a su vez, recibe el nombre de cuadrilбtero. Cada esquina (donde se juntan dos rectas) es un punto, entonces en este caso, tenemos cuatro puntos.
Entonces, llevбndolo al mundo del SA-MP, tendrнamos cuatro puntos de coordenadas:
Vayamos ahora al tema de Incognito, donde nos ha dejado esta nota interesante:
Entonces, entendemos que tenemos que crear una matriz de la siguiente manera:
En nuestro caso, como tenemos cuatro puntos, serнa asн:
En definitiva, deducimos que:
Una vez entendido esto podemos seguir adelante, vamos a mirar la funciуn en sн:
Una vez sabemos todo esto, y con los datos que tenemos, podrнamos crear nuestro polнgono:
Y ya con esto tendrнamos un polнgono definido, y con las demбs funciones de las бreas podemos programar lo que queramos.
Respecto al rectбngulo, OTACON explica aquн perfectamente como sacar Float:minx, Float:miny, Float:maxx, Float:maxy.
Un saludo.
PD: explicaciуn a groso modo.
Es decir, una cantidad de segmentos rectos que se juntan por los extremos y encierran una superficie llamada бrea. Dependiendo de la cantidad de segmentos, nuestro polнgono recibirб distintos nombres (triбngulo, pentбgono, octбgono, etc.).
Entonces, concluyo que un polнgono ha de tener mнnimo tres lados para poder encerrar una superficie.
[*] Por ejemplo:
Esta figura es un polнgono de cuatro lados, a su vez, recibe el nombre de cuadrilбtero. Cada esquina (donde se juntan dos rectas) es un punto, entonces en este caso, tenemos cuatro puntos.
Entonces, llevбndolo al mundo del SA-MP, tendrнamos cuatro puntos de coordenadas:
- Punto A: ax, ay, az
- Punto B: bx, by, bz
- Punto C: cx, cy, cz
- Punto D: dx, dy, dz
Vayamos ahora al tema de Incognito, donde nos ha dejado esta nota interesante:
Quote:
Originally Posted by Incognito
The points in CreateDynamicPolygon and CreateDynamicPolygonEx need to be specified as a sequence of ordered pairs (x1, y1, x2, y2, ..., xn, yn). The number of elements in the array must be divisible by two for this reason. The first point must also be equal to the last point to form a closed path.
|
Quote:
Originally Posted by Incognito
Los puntos en CreateDynamicPolygon y CreateDynamicPolygonEx deben estar definidos como una secuencia de parejas ordenadas (x1, y1, x2, y2, ..., xn, yn). Debido a lo anterior, el nъmero de elementos de la matriz ha de ser divisible por dos. El primer punto ha de ser igual al ъltimo para formar un camino cerrado.
|
pawn Код:
new Float:Puntos[] = {
x1, y1,
x2, y2,
x3, y3,
......,
xn, yn
};
pawn Код:
new Float:Puntos[10] = {
ax, ay,
bx, by,
cx, cy,
dx, dy,
ax, ay /* El ъltimo punto, ha de ser igual al primer punto para cerrar la figura. */
};
/* Como tenemos 10 valores en total (dos valores por cada posiciуn), le damos un tamaсo de 10 a nuestra matriz. */
- un polнgono ha de tener como mнnimo tres lados para encerrar un бrea.
- no podemos definir la altura del бrea ya que usamos posiciones en dos dimensiones (x, y).
- el ъltimo punto ha de ser igual al primer punto para trazar una recta que encierre el бrea del polнgono.
Una vez entendido esto podemos seguir adelante, vamos a mirar la funciуn en sн:
pawn Код:
native CreateDynamicPolygon(Float:points[], Float:minz = -FLOAT_INFINITY, Float:maxz = FLOAT_INFINITY, maxpoints = sizeof points, worldid = -1, interiorid = -1, playerid = -1);
Quote:
|
pawn Код:
new Float:Puntos[10] = {
ax, ay,
bx, by,
cx, cy,
dx, dy,
ax, ay
};
CreateDynamicPolygon(Puntos, -FLOAT_INFINITY, FLOAT_INFINITY, sizeof(Puntos), -1, -1, -1);
Respecto al rectбngulo, OTACON explica aquн perfectamente como sacar Float:minx, Float:miny, Float:maxx, Float:maxy.
Un saludo.
PD: explicaciуn a groso modo.
pawn Код:
new Float:Puntos[10] = {
ax, ay,
bx, by,
cx, cy,
dx, dy,
ax, ay
};
/*
1є. Recta de (ax, ay) a (bx, by).
2є. Recta de (bx, by) a (cx, cy).
3є. Recta de (cx, cy) a (dx, dy).
4є. Recta de (dx, dy) a (ax, ay).
*/
/* De esta manera, encerramos un бrea, eso explica estos puntos que hemos usado. */