zoukankan      html  css  js  c++  java
  • poj1410

    计算几何

    题意:问线段与矩形(边与坐标轴平行)是否相交

    分析:分别判断4条边与线段是否相交,在判断线段两端点是否在矩形内。

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    using namespace std;

    #define eps 1E-10

    struct Point
    {
    int x, y;
    } point[
    5], s, e;

    bool in(Point &a)
    {
    if (a.x <= point[2].x && a.x >= point[0].x && a.y <= point[2].y && a.y
    >= point[0].y)
    return true;
    return false;
    }

    bool inter(Point &a, Point &b, Point &c, Point &d)
    {
    if (min(a.x, b.x) > max(c.x, d.x) || min(a.y, b.y) > max(c.y, d.y) || min(
    c.x, d.x)
    > max(a.x, b.x) || min(c.y, d.y) > max(a.y, b.y))
    return 0;
    double h, i, j, k;
    h
    = (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
    i
    = (b.x - a.x) * (d.y - a.y) - (b.y - a.y) * (d.x - a.x);
    j
    = (d.x - c.x) * (a.y - c.y) - (d.y - c.y) * (a.x - c.x);
    k
    = (d.x - c.x) * (b.y - c.y) - (d.y - c.y) * (b.x - c.x);
    return h * i <= eps && j * k <= eps;
    }

    int main()
    {
    //freopen("t.txt", "r", stdin);
    int t;
    scanf(
    "%d", &t);
    while (t--)
    {
    scanf(
    "%d%d%d%d%d%d%d%d", &s.x, &s.y, &e.x, &e.y, &point[0].x,
    &point[0].y, &point[2].x, &point[2].y);
    if (point[0].x > point[2].x)
    swap(point[
    0].x, point[2].x);
    if (point[0].y > point[2].y)
    swap(point[
    0].y, point[2].y);
    point[
    1].x = point[0].x;
    point[
    1].y = point[2].y;
    point[
    3].x = point[2].x;
    point[
    3].y = point[0].y;
    point[
    4] = point[0];
    bool ok = false;
    for (int i = 0; i < 4; i++)
    if (inter(point[i], point[i + 1], s, e))
    {
    ok
    = true;
    break;
    }
    if (in(s) || in(e))
    ok
    = true;
    if (ok)
    printf(
    "T\n");
    else
    printf(
    "F\n");
    }
    return 0;
    }

  • 相关阅读:
    javaScript设计模式探究【1】
    Java基础算法集50题
    DataTable学习笔记排序细则、列隐藏[3]
    javaScript设计模式探究【4】工厂模式
    javaScript设计模式探究【3】
    一次面试感想+js最近学习体会
    DataTable学习笔记范例应用篇[2]
    腾讯2013实习生招聘面经
    初品cakephp
    php编译中配置libxml2的错误
  • 原文地址:https://www.cnblogs.com/rainydays/p/2136659.html
Copyright © 2011-2022 走看看