help migracao para o object pascal

27/10/2003

1

pessoal,
eu nao sei c muito bem e estou com dificuldade em passar este algoritmo escrito em c para o object pascal.
Algoritmo para preenchimento de polígonos.
#include <stdlib.h>
define MAX 100
/* declaração de funções: */
void Ordenaxmin(int p, float xi[], int ymin[], int ymax[], float m[]);
void horizontal(int x0, int x1, int y);
int round(float x);
/* rotina para preenchimento de polígonos*/
void fillrea(int nv, int x[], int y[])
{ int YMIN, YMAX, yi, ymin[MAX], ymax[MAX], i, j, p =0;
float xi[MAX], m[MAX];
char par, MASK = 1;
YMIN = YMAX = y[0];
i = nv – 1;
for(j=0;j<nv;j++){
if (y[j] > y[i]){
ymin[p]=y[i];
ymax[p]=y[j];
xi[p]=xi[i];
m[p]=(float)(x[j]-x[i])/(y[j]-j[i]);
p++}
else
if (y[i] > y[j]){
ymin[p]=y[j];
ymax[p]=y[i];
xi[p]=xi[j];
m[p]=(float)(x[i]-x[j])/(y[i]-j[j]);
p++}
i = j;
}
for (yi=YMIN;yi<YMAX;yi++){
ordenaxmin(p,xi,ymin,ymax,m);
par = 0;

for(j=0;j<p;j++){
if(yi >= ymin[j] && yi < ymax[j]){
if (!par)
i=j;}
else{
horizontal(round(xi[i]),round(xi[j]),yi);
xi[i] = xi[i] + m[i];
xi[j] = xi[j] + m[j];
par = MASK^par;}
}
}
}
void horizontal(int xo,int x1,int y)
{ int x;
for(x = x0;x0<= x1;x++)
writepixel(x,y,interior_color);
}
caso alguem poder ajuida-me muito obrigado
foi


Responder