Intenté escribir un código de "línea" para visualizar una matemática simple; Aquí está

Ploygon polygon=new Ploygon();
int x,y;


ploygon.addPoint(0,0);   
polygon.addPoint(width,height);

g.drawPolygon(polygon);

El código da efecto y = x;

OK ... es un código bastante simple; Pero lo que estoy interesado en obtener son puntos cada N píxeles durante el período de declaración como {x0, y0} {0,0} y {x1, y1} {ancho, alto} y ese es el problema :(

La matriz polygon xpoints no es útil porque puede contener los mismos puntos que se agregaron cuando se invocó el método addPoint (x, y); entonces, en mi caso, solo hay dos puntos agregados que están conectados por Polygon, pero ¿qué pasa con todos los puntos de descanso que permanecen entre estos puntos {x0, y0} {0,0} y {x1, y1} {ancho, alto}? ¿Cómo conseguirlos?

Por ejemplo. Volviendo al fragmento anterior, ¿cómo averiguar qué valor de punto x, y es cuando (altura% N) = 0 , etc.?

¿Existe la forma más óptima?

Gracias

0
user592704 25 dic. 2011 a las 04:17
Consulte también Agregar un punto a Polygon.
 – 
trashgod
25 dic. 2011 a las 06:27

1 respuesta

La mejor respuesta

Lo que debe darse cuenta aquí es que ya no está trabajando con píxeles / coordenadas per se, sino que está trabajando con vectores. Obtendría casi la misma imagen de un polígono que contiene las coordenadas (-500,-500) y (500,500) que se dibuja en un objeto Graphics que representa el área (recortada) de (0,0) en la parte inferior izquierda a (100,100) en la parte inferior derecha. (ignorando por ahora que el sistema de coordenadas real de Graphics tiene un eje y invertido).

Por lo tanto, debe resolver esto de una manera matemática más básica en lugar de una manera de "leer los píxeles". A menos que solo desee determinar si un punto dado está en la forma (para lo cual la interfaz Shape ofrece un método incorporado), estaría considerando calcular la pendiente de una línea y determinar las funciones que representan su línea. Por ejemplo, continuando con el ejemplo, tiene dos puntos (-500, -500) y (500,500) lo que da una pendiente de 1000/1000 = 1. Por lo tanto, podría reescribir esa función en términos de sus coordenadas x como f(x) = -500 + (x + 500). Entonces, si quiere saber si el punto (100,200) está en esa línea, todo lo que necesita hacer es calcular f(100) y ver que no lo está.

Volviendo a su ejemplo, al encontrar puntos que coincidan con un predicado (altura% N = 0), estaríamos buscando f(x) == 0 mod N y, por lo tanto, "todo" que tendría que hacer es resolver la ecuación para x.

0
user268396 25 dic. 2011 a las 04:46
"Volviendo a su ejemplo, al encontrar puntos que coincidan con un predicado (altura% N = 0), estaríamos buscando f (x) == 0 mod N y, por lo tanto, 'todo' que tendría que hacer es resolver el ecuación para x ". Todo está bien, pero ¿y si f (x)! = N? Quiero decir que no es un número entero, por lo que no hay forma de obtener las coordenadas x, y correctas. ¿Qué sucede si la declaración de la trama es como "y = x * tan (a / b) + coeff", por ejemplo? ¿Hay alguna forma de detectar este tipo de puntos de función para mantenerlos, digamos, en una matriz?
 – 
user592704
25 dic. 2011 a las 07:42
Si te entiendo correctamente, eso se resolvería redondeando tu respuesta al número entero más cercano.
 – 
user268396
25 dic. 2011 a las 16:05
Emm ... ¿Te refieres a la ronda de matemáticas ()? De acuerdo, lo intentaré y reportaré mis resultados.
 – 
user592704
26 dic. 2011 a las 23:31