UVa 11437 - Triangle Fun
来源:互联网 发布:游戏手柄软件下载 编辑:程序博客网 时间:2024/05/23 01:23
该学一下用向量求交点坐标了。
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cstdlib>#include <cmath>#define eqs 1e-8using namespace std;double a = 2.0/3;double b = 1.0/3;int main(){ //freopen("data.txt","r",stdin); double xax,xay; double xbx,xby; double xcx,xcy; double xfx,xfy; double xex,xey; double xdx,xdy; double xpx,xpy; double xqx,xqy; double xrx,xry; int t; scanf("%d",&t); while(t--) { scanf("%lf %lf",&xax,&xay); scanf("%lf %lf",&xbx,&xby); scanf("%lf %lf",&xcx,&xcy); xfx = a*xbx+b*xax; xfy = a*xby+b*xay; xex = a*xax+b*xcx; xey = a*xay+b*xcy; xdx = a*xcx+b*xbx; xdy = a*xcy+b*xby; double linadk,linadb; int sumad=0; if(fabs(xax-xdx-0)<=eqs) { linadb = xax; sumad = 0; }else if(fabs(xay-xdy-0)<=eqs) { linadb = xay; sumad = 1; }else { sumad = 2; linadk = (xay-xdy)/(xax-xdx); linadb = xay - linadk * xax; } double linfck,linfcb; int sumfc=0; if(fabs(xfx-xcx-0)<=eqs) { linfcb = xfx; sumfc = 0; }else if(fabs(xfy-xcy-0)<=eqs) { linfcb = xay; sumfc = 1; }else { sumfc = 2; linfck = (xfy-xcy)/(xfx-xcx); linfcb = xfy - linfck * xfx; } double linbek,linbeb; int sumbe=0; if(fabs(xbx-xex-0)<=eqs) { linbeb = xbx; sumbe = 0; }else if(fabs(xby-xey-0)<=eqs) { linbeb = xby; sumbe = 1; }else { sumbe = 2; linbek = (xby-xey)/(xbx-xex); linbeb = xby - linbek * xbx; } if(sumfc==0) { xrx = linfcb; if(sumad==1) { xry = linadb; }else if(sumad==2) { xry = linadk*xrx+linadb; } xqx = linfcb; if(sumbe==1) { xqy = linbeb; }else if(sumbe==2) { xqy = linbek*xqx+linbeb; } }else if(sumfc==1) { xry = linfcb; if(sumad==0) { xrx = linadb; }else if(sumad==2) { xrx = (xry-linadb)/linadk; } xqy = linfcb; if(sumbe==0) { xqx = linbeb; }else if(sumbe==2) { xqx = (xqy-linbeb)/linbek; } }else { if(sumad==0) { xrx = linadb; xry = xrx*linfck+linfcb; }else if(sumad==1) { xry = linadb; xrx = (xry-linfcb)/linfck; }else if(sumad==2) { xrx = (linfcb-linadb)/(linadk-linfck); xry = linfck * xrx + linfcb; } if(sumbe==0) { xqx = linbeb; xqy = xqx*linfck+linfcb; }else if(sumbe==1) { xqy = linbeb; xqx = (xqy-linfcb)/linfck; }else if(sumad==2) { xqx = (linfcb-linbeb)/(linbek-linfck); xqy = linfck * xqx + linfcb; } } if(sumbe==0) { xpx = linbeb; if(sumad==1) { xpy = linadb; }else if(sumad==2) { xpy = linadk*xpx+linadb; } }else if(sumbe==1) { xpy = linbeb; if(sumad==0) { xpx = linadb; }else if(sumad==2) { xpx = (xpy-linadb)/linadk; } }else if(sumbe==2) { if(sumad==0) { xpx = linadb; xpy = xrx*linbek+linbeb; }else if(sumad==1) { xpy = linadb; xpx = (xry-linbeb)/linbek; }else if(sumad==2) { xpx = (linbeb-linadb)/(linadk-linbek); xpy = linbek * xpx + linbeb; } } double ans = 0; ans+=(xpx*xqy-xpy*xqx); ans+=(xqx*xry-xqy*xrx); ans+=(xrx*xpy-xry*xpx); if(ans<0) { ans = ans * -1; } ans = ans/2; printf("%.0lf\n",ans); } return 0;}
1 0
- uva 11437 Triangle Fun
- UVA 11437 Triangle Fun
- uva 11437 - Triangle Fun
- UVa 11437 - Triangle Fun
- UVA 11437 Triangle Fun
- uva 11437 - Triangle Fun
- UVA 11437 Triangle Fun
- UVa 11437 - Triangle Fun
- UVA 11437 - Triangle Fun
- UVA 11437 || Triangle Fun
- UVA 11437 Triangle Fun
- UVa 11437 Triangle Fun(几何)
- Triangle Fun - UVa 11437 几何
- uva 11437 - Triangle Fun(几何)
- uva 11437 Triangle Fun (简单计算几何)
- 入门题 UVA 11437 - Triangle Fun
- UVA 11437 - Triangle Fun 向量几何
- 【UVA】11437Triangle Fun(简单几何)
- 元素浮动,其后的元素的 margin-top会被压制
- wikioi天梯之1014 装箱问题 入门动态规划 【背包问题】
- “IIS APPPOOL\DefaultAppPool” 登录失败
- 动态链接库的调用约定
- Android 30月入门到精通(6) Android JNuit Test
- UVa 11437 - Triangle Fun
- JCRE-4.7.1 信道管理关闭命令
- 第八周C++作业
- SDUTOJ 2138 图结构练习——BFSDFS——判断可达性(以边表为数据结构)
- 函数指针和指针函数
- uiautomator中UiCollection学习笔记(4)
- linux top命令VIRT,RES,SHR,DATA的含义(转)
- C++类中static成员使用
- iOS开发 容易犯错的知识点和不错的细小知识点(持续更新)