45 lines
No EOL
953 B
Text
45 lines
No EOL
953 B
Text
struct Vec2 {
|
|
int x;
|
|
int y
|
|
}
|
|
|
|
struct Triangle {
|
|
Vec2 p1;
|
|
Vec2 p2;
|
|
Vec2 p3
|
|
}
|
|
|
|
bool edgeFunction(Vec2 a, Vec2 b, Vec2 point) {
|
|
return (point.x - a.x) * (b.y - a.y) - (point.y - a.y) * (b.x - a.x) >= 0;
|
|
}
|
|
|
|
bool isInside(Vec2 point, Triangle t) {
|
|
return edgeFunction(t.p1, t.p2, point) & edgeFunction(t.p2, t.p3, point) & edgeFunction(t.p3, t.p1, point);
|
|
}
|
|
|
|
void render(Triangle triangle) {
|
|
print_string("\n");
|
|
for (var i = 0; i < 24; i = i + 1;) {
|
|
for (var j = 0; j < 80; j = j + 1;) {
|
|
var point = new Vec2 {x = i; y = j};
|
|
if (isInside(point, triangle)) {
|
|
print_string("&");
|
|
} else {
|
|
print_string("!");
|
|
}
|
|
}
|
|
print_string("\n");
|
|
}
|
|
print_string("\n");
|
|
return;
|
|
}
|
|
|
|
int program(int argc, string[] args) {
|
|
var triangle = new Triangle {
|
|
p1 = new Vec2 { x = 20; y = 4 };
|
|
p2 = new Vec2 { x = 5; y = 25 };
|
|
p3 = new Vec2 { x = 10; y = 68 }
|
|
};
|
|
render(triangle);
|
|
return 1;
|
|
} |