Добрый день! Не могу решить данную задачу, буду очень признателен. Необходимо выполнить внешнее отсечение пятиугольника окном на основе алгоритма Сазерленда-Коуэна. Что я только не пробовал, у меня не выходит. Пробовал, как на с++, но нет понятия, как это сделать.
import javafx.scene.canvas.Canvas;
import javafx.scene.shape.Line;
import javafx.scene.shape.Rectangle;
public class RT{
int x1,x2,x3;
double xa;
double ya;
double xb;
double yb;
private int n = 5;
private int m = 6;
public void point(double x, double y) {};
private double[] EndXmas = {225, 275, 300, 250, 200, 225};
private double[] EndYmas = {300, 300, 250, 200, 250, 300};
private Rectangle r1 = new Rectangle(200, 260, 250, 290);
private Rectangle r2 = new Rectangle(260, 210, 290, 290);
private Rectangle r3 = new Rectangle(200, 210, 250, 240);
Line [] lines = new Line[];
for (int i=0, j=1; i<n; i++,j++){
Canvas.MoveTo(EndXmas[i],EndYmas[i]);
Line(EndXmas[j],EndYmas[j]);
}
for (int i=0, j=1; i<n; i++,j++){
point a[]={EndXmas[i],EndYmas[i]};
point b[]={EndXmas[j],EndYmas[j]};
x1 = cohen_sutherland (r1, a, b);
x2 = cohen_sutherland (r2, a, b);
x3 = cohen_sutherland (r3, a, b);
if ((x1==0)||(x2==0)||(x3==0)){
xa = a->x;
ya = a->y;
xb = b->x;
yb = b->y;
}
Canvas.MoveTo(xa,ya);
Canvas.lines(xb,yb);
}
int LEFT=1;
int RIGHT=2;
int BOT=4;
int TOP= 8;
int vcode(r, p){
((((p)->x < (r)->x_min) ? LEFT : 0)+ (((p)->x > (r)->x_max) ?
RIGHT : 0)+(((p)->y < (r)->y_min) ? BOT : 0)+(((p)->y > (r)->y_max) ? TOP : 0));
}
int cohen_sutherland (int r, int a, int b) {
int code_a, code_b, code;
int c;
code_a = vcode(r, a);
code_b = vcode(r, b);
while (code_a | code_b) {
if (code_a & code_b) return -1;
if (code_a) {
code = code_a;
c = a;
} else {
code = code_b;
c = b;
}
if (code & LEFT) {
c -> y += (a -> y - b -> y) * (r -> x_min - c -> x) / (a -> x - b -> x);
c -> x = r -> x_min;
} else if (code & RIGHT) {
c -> y += (a -> y - b -> y) * (r -> x_max - c -> x) / (a -> x - b -> x);
c -> x = r -> x_max;
} else if (code & BOT) {
c -> x += (a -> x - b -> x) * (r -> y_min - c -> y) / (a -> y - b -> y);
c -> y = r -> y_min;
} else if (code & TOP) {
c -> x += (a -> x - b -> x) * (r -> y_max - c -> y) / (a -> y - b -> y);
c -> y = r -> y_max;
}
if (code == code_a) {
a = c;
code_a = vcode(r, a);
} else {
b = c;
code_b = vcode(r, b);
}
}
return 0;
}}
Буду признателен любой помощи
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня 2 Activity на одном RecyclerView, на другом FragmentВ Activity в котором RecyclerView все хорошо работает, он заполняется
Пытаюсь вставить значение из inputКогда прописываю строкой - все работает, когда тяну из переменной - jQuery
Добрый деньПодскажите пожалуйста как при успешной проверке формы (data