zoukankan      html  css  js  c++  java
  • qsc52(三角形线性插值)

    题目链接:http://qscoj.cn/problem/52/

    题意:中文题诶~

    思路:水题,只要知道三角形插值和判断点在三角形内就OK了

    关于三角形插值:http://www.cnblogs.com/wangchengfeng/p/3453194.html

    先判断插入点是否在三角形内,在的话解二元一次方程组:

    P.x = (1 - u - v) * P1.x + u * P2.x + v * P3.x

    P.y = (1 - u - v) * P1.y + u * P2.y + v * P3.y

    再将u, v代入:P = (1 - u - v) * P1 + u * P2 + v * P3

    P就是答案了

    代码:

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <math.h>
     4 using namespace std;
     5 
     6 const double res=1e-6;
     7 struct node{
     8     double x, y;
     9 };
    10 
    11 double get_area(node a, node b, node c){ //***用行列式计算三角形面积
    12     double area=fabs(a.x*b.y+a.y*c.x+b.x*c.y-a.x*c.y-a.y*b.x-b.y*c.x);
    13     return area;
    14 }
    15 
    16 bool is_ok(node p1, node p2, node p3, node p){//***判断点p是否在三角形内
    17     double areap=get_area(p1, p2, p);
    18     areap+=get_area(p1, p3, p);
    19     areap+=get_area(p2, p3, p);
    20     double area=get_area(p1, p2, p3);
    21     if(fabs(areap-area)<res){
    22         return true;
    23     }else{
    24         return false;
    25     }
    26 }
    27 
    28 int main(void){
    29     double x1, y1, w1, x2, y2, w2, x3, y3, w3, x, y;
    30     while(cin >> x1 >> y1 >> w1 >> x2 >> y2 >> w2 >> x3 >> y3 >> w3 >> x >> y){
    31         node p1, p2, p3, p;
    32         p1.x=x1, p1.y=y1;
    33         p2.x=x2, p2.y=y2;
    34         p3.x=x3, p3.y=y3;
    35         p.x=x, p.y=y;
    36         if(!is_ok(p1, p2, p3, p)){
    37             cout << -1 << endl;
    38             continue;
    39         }
    40         double a1=x2-x1, b1=x3-x1, c1=x-x1;
    41         double a2=y2-y1, b2=y3-y1, c2=y-y1;
    42         double u=(b1*c2-b2*c1)/(a2*b1-a1*b2);
    43         double v=(c1-a1*u)/b1;
    44         double ans=(1-u-v)*w1+u*w2+v*w3;
    45         printf("%.2lf
    ", ans);
    46     }
    47 }
    View Code
  • 相关阅读:
    loadrunne-- Analysis 分析器
    Fiddler抓包工具详细介绍
    在 Windows 10 x64 上安装及使用 ab 工具的流程
    Ab工具基本使用
    ab压测返回结果解析
    VMware Workstation 14 Pro永久激活密钥
    通用接口测试用例设计
    线段树の二 区间乘+区间加
    线段树の一 区间和
    C++位运算
  • 原文地址:https://www.cnblogs.com/geloutingyu/p/6602129.html
Copyright © 2011-2022 走看看