CodeForces 630 O. Arrow(计算几何)
2016-02-21 12:35
218 查看
Description
箭矢形状如下图,给出箭头中心坐标(px,py)、箭头的方向向量(vx,vy)及几个长度(如图标注),求箭矢七个顶点坐标
Input
八个整数px,py,vx,vy,a,b,c,
(-1000<=px,py,vx,vy<=1000,vx*vx+vy*vy>0,1<=a,b,c,d<=1000,a>c)
Output
从箭头开始逆时针输出七个顶点坐标,每个顶点坐标占一行,要求结果与精确值相对误差不超过1e-9
Sample Input
8 8 0 2 8 3 4 5
Sample Output
8.000000000000 11.000000000000
4.000000000000 8.000000000000
6.000000000000 8.000000000000
6.000000000000 3.000000000000
10.000000000000 3.000000000000
10.000000000000 8.000000000000
12.000000000000 8.000000000000
Solution
简单计算几何
Code
箭矢形状如下图,给出箭头中心坐标(px,py)、箭头的方向向量(vx,vy)及几个长度(如图标注),求箭矢七个顶点坐标
Input
八个整数px,py,vx,vy,a,b,c,
(-1000<=px,py,vx,vy<=1000,vx*vx+vy*vy>0,1<=a,b,c,d<=1000,a>c)
Output
从箭头开始逆时针输出七个顶点坐标,每个顶点坐标占一行,要求结果与精确值相对误差不超过1e-9
Sample Input
8 8 0 2 8 3 4 5
Sample Output
8.000000000000 11.000000000000
4.000000000000 8.000000000000
6.000000000000 8.000000000000
6.000000000000 3.000000000000
10.000000000000 3.000000000000
10.000000000000 8.000000000000
12.000000000000 8.000000000000
Solution
简单计算几何
Code
#include<cstdio> #include<iostream> #include<cmath> using namespace std; double px,py,vx,vy,a,b,c,d,x[8],y[8]; int main() { while(~scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&px,&py,&vx,&vy,&a,&b,&c,&d)) { double tx=vx/sqrt(vx*vx+vy*vy),ty=vy/sqrt(vx*vx+vy*vy); x[1]=b*tx+px,y[1]=b*ty+py; x[7]=a*ty/2+px,y[7]=-a*tx/2+py; x[2]=-a*ty/2+px,y[2]=a*tx/2+py; x[6]=c*ty/2+px,y[6]=-c*tx/2+py; x[3]=-c*ty/2+px,y[3]=c*tx/2+py; x[4]=x[3]-d*tx,y[4]=y[3]-d*ty; x[5]=x[6]-d*tx,y[5]=y[6]-d*ty; for(int i=1;i<=7;i++)printf("%.10lf %.10lf\n",x[i],y[i]); } return 0; }
相关文章推荐
- 漫谈 polling 和 Websocket
- 【转】TI Z-stack协议栈开发环境和工作流程
- 最长上升子序列nlogn及n^2算法
- 【转】串口初解
- 单例模式
- 炮弹游戏1
- 【Linux 基础篇】之软件管理.
- JAVA中的集合与泛型整理总结
- 《转》 浅谈C# 多态的魅力(虚方法,抽象,接口实现)
- Html5大文件断点续传
- 二叉树——二叉树的遍历
- Cocos2d-x PageView的使用
- [Python] re(正则表达式) 模块使用方法
- 基于AJAX的长轮询(long-polling)方式实现简单的聊天室程序
- maven核心概念--生命周期
- 函数参数传递
- maven核心概念--生命周期
- 如何用AndroidStudio导入github项目
- 程序结构&&程序设计(三)
- Javascript自学-6