// UVa 10242 - Fourth Point !! #include <iostream> #include <stdio.h> #include <cmath> using namespace std; struct point { double x, y; }; bool operator !=(point a, point b) { return a.x != b.x || a.y != b.y; } struct line { double a, b, c; }; line points_to_line(point p, point q) { line l; l.a = p.y - q.y; l.b = q.x - p.x; l.c = -l.a * p.x - l.b * p.y; return l; } line parallel(line l, point p) { line par; par.a = l.a; par.b = l.b; par.c = -l.a * p.x - l.b * p.y; return par; } point intersection(line l1, line l2) { point p; p.y = (l2.c * l1.a - l1.c * l2.a) / (l1.b * l2.a - l2.b * l1.a); p.x = (l2.c * l1.b - l1.c * l2.b) / (l1.a * l2.b - l2.a * l1.b); return p; } void print(line l) { printf("%.1f x + %.1f y + %.1f = 0\n", l.a, l.b, l.c); } int main() { point p1, p2, p3, p4; while (cin >> p1.x >> p1.y >> p2.x >> p2.y >> p3.x >> p3.y >> p4.x >> p4.y) { line side1 = points_to_line(p1, p2); line side2 = points_to_line(p3, p4); line side3 = parallel(side1, (p3 != p1 && p3 != p2) ? p3 : p4); line side4 = parallel(side2, (p1 != p3 && p1 != p4) ? p1 : p2); point sol = intersection(side3, side4); printf("%.3f %.3f\n", sol.x, sol.y); } return 0; }
Wednesday, June 24, 2015
UVa 10242 - Fourth Point !!
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment