hdu4998:http://acm.hdu.edu.cn/showproblem.php?pid=4998

题意:给你n个点,以及绕每个点旋转的弧度。然后,问你经过这n次旋转,平面中的点总的效果是相当于哪个点旋转了多少弧度。

题解:我的第一道计算几何。可以选两个点,求出旋转之后的对应点,然后分别求出这两个点的中垂线,中垂线的交点就是要求的点,弧度就是所有弧度之和mod(2*pi)

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
const double pi=3.14159265;
using namespace std;
int n;
struct Point{
double x;
double y;
double s;
}num[];
struct LINE{
double a,b,c;
Point s;
};
Point HHH(Point o,double alpha,Point p) {//点p绕着o旋转alpha弧度
Point tp;
p.x-=o.x;
p.y-=o.y;
tp.x=p.x*cos(alpha)-p.y*sin(alpha)+o.x;
tp.y=p.y*cos(alpha)+p.x*sin(alpha)+o.y;
return tp;
}
bool CCC(LINE l1,LINE l2,Point&p){//两条直线是否相交,如果相交,则交点为p
double d=l1.a*l2.b-l2.a*l1.b;
if(abs(d)<1e-) return false;
p.x = (l2.c*l1.b-l1.c*l2.b)/d;
p.y = (l2.a*l1.c-l1.a*l2.c)/d;
return true;
}
LINE DDD(const Point &_a, const Point &_b){//求两点之间垂直平分线
LINE ret;
ret.s.x = (_a.x + _b.x)/;
ret.s.y = (_a.y + _b.y)/;
ret.a = _b.x - _a.x;
ret.b = _b.y - _a.y;
ret.c = (_a.y - _b.y) * ret.s.y + (_a.x - _b.x) * ret.s.x;
return ret;
} LINE EEE(Point a,Point b){//求经过两点的中垂线
LINE ret;
if(abs(a.x-b.x)<1e-){
ret.a=;
ret.b=;
ret.c=-a.x;
return ret;
}
ret.a=a.y-b.y;
ret.b=b.x-a.x;
ret.c=a.x*b.y-a.y*b.x;
return ret;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
double sum=;
for(int i=;i<=n;i++){
scanf("%lf%lf%lf",&num[i].x,&num[i].y,&num[i].s);
sum+=num[i].s;
}
Point s1,s2;
s1.x=2.345,s1.y=4.123;
s2.x=11.345,s2.y=12.123;
Point t1=s1,t2=s2;
for(int i=;i<=n;i++){
Point temp=HHH(num[i],num[i].s,t1);
t1=temp;
}
for(int i=;i<=n;i++){
Point temp=HHH(num[i],num[i].s,t2);
t2=temp;
}
LINE one1=DDD(s1,t1);
LINE one2=DDD(s2,t2);
Point a;
if(CCC(one1,one2,a)){
if(sum>*pi)
sum-=*pi;
printf("%lf %lf %lf\n",a.x,a.y,sum);
}
else{
LINE ttt=EEE(s1,s2);
CCC(one1,ttt,a);
if(sum>*pi)
sum-=*pi;
printf("%lf %lf %lf\n",a.x,a.y,sum);
}
}
}

Rotate的更多相关文章

  1. Canvas绘图之平移translate、旋转rotate、缩放scale

    画布操作介绍 画布绘图的环境通过translate(),scale(),rotate(), setTransform()和transform()来改变,它们会对画布的变换矩阵产生影响. 函数 方法 描 ...

  2. [LeetCode] Rotate Array 旋转数组

    Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array  ...

  3. [LeetCode] Rotate List 旋转链表

    Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given 1 ...

  4. [LeetCode] Rotate Image 旋转图像

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

  5. jQuery.rotate.js参数

    CSS3 提供了多种变形效果,比如矩阵变形.位移.缩放.旋转和倾斜等等,让页面更加生动活泼有趣,不再一动不动.然后 IE10 以下版本的浏览器不支持 CSS3 变形,虽然 IE 有私有属性滤镜(fil ...

  6. CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)

    CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)   在CSS3中,可以利用transform功能来实现文字或图像的旋转.缩放.倾 ...

  7. 偏移:translate ,旋转:rotate,缩放 scale,不知道什么东东:lineCap 实例

    <!DOCTYPE HTML> <head> <meta charset = "utf-8"> <title>canvas</ ...

  8. 记一道有意思的算法题Rotate Image(旋转图像)

    题出自https://leetcode.com/problems/rotate-image/ 内容为: You are given an n x n 2D matrix representing an ...

  9. iOS 2D绘图 (Quartz2D)之Transform(CTM,Translate,Rotate,scale)

    前言:Quartz默认采用设备无关的user space来进行绘图,当context(画板)建立之后,默认的坐标系原点以及方向也就确认了,可以通过CTM(current transformation ...

  10. Rotate Image

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

随机推荐

  1. c++匿名类—指针

    1 摘自网上 2代码实例 #include <iostream> #include <list> #include <iterator> #include < ...

  2. Java并发——线程池Executor框架

    线程池 无限制的创建线程 若采用"为每个任务分配一个线程"的方式会存在一些缺陷,尤其是当需要创建大量线程时: 线程生命周期的开销非常高 资源消耗 稳定性 引入线程池 任务是一组逻辑 ...

  3. ecshop在PHP 5.4以上版本各种错误问题处理

    在php5.4版本之后有很多的函数与功能进行丢弃与升级功能了,现在国内很多CMS都还未按php5.4标准来做了,下面我整理了一些在ecshop在PHP 5.4以上版本各种错误问题处理. 1.PHP 5 ...

  4. Unity3D 中3D刚体组件的力

    一般一个物体除了手动添加刚体受到重力作用外,还可以给该刚体添加一个其他的力. 这里就要涉及到一个恒定力(Constant Force)组件 首先要去掉物体的重力(因为重力是刚体组件中默认的一个向下的力 ...

  5. 利用servlet技术实现验证码功能

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...

  6. MVC LINQ中用封装的TSQL通用更新方法

    把TSQL拿出来,做了一个封装,适用的所有表,更新有两种,普通更新和记数更新 看代码:这两个方法是写在DAL里的数据操作基类里的,只有它的子类可以用它,所以用protected做为限制 /// < ...

  7. 转载--SQL Server 2005的XQuery介绍

    原文地址: http://bbs.51cto.com/thread-458009-1-1.html   引用: 摘要 本文介绍了SQL Server 2005能够支持的XQuery的各方面特性如FLW ...

  8. OC 知识点回顾

    /* 字符串: NSString  不可变字符串  字符串对象的内容不能修改,字符串的指针可以改变 NSMutableString 可变字符串   可以修改字符串对象的内容,继承自NSString , ...

  9. win7音量控制图标不见了怎么办啦?

    1.打开程序管理器(ctrl+alt+delete)2.在进程那里找到"explorer.exe",然后按结束进程(此时工具栏会消失)3.然后在文件(程序管理器左上角),点击&qu ...

  10. 正则表达式(.NET)

    元字符: \b  单词的开头或结尾,匹配一个位置 .    匹配除换行符以外的任意字符 \d  匹配一位数字  \d{n} n个数字  \d{a,b} a到b个数字,包含a,b \s  匹配任意空白符 ...