uva 10609 - Fractal
2016-01-23 13:52
218 查看
题目大意:给出A,B两个点的坐标,以及T,每次找到A、B的四等分点C,D,然后以AB/2为边长,C,D为顶点,构建一个等边三角形,E为另外一个顶点,然后再对C,E;E,D做同样的操作,直到构建的等边三角形的边长小于T时。输出所有过程中的点,按照x坐标排序,相同的按照y坐标。
解题思路:dfs模拟,用ans记录点,最后排序,C,D,E可以根据向量的方法从A,B得到。
已知等边三角形两点的坐标.求第三点坐标, 已知X(x1,y1), Y(x2,y2) 求Z(x3,y3), x3=? y3=?
1、求已知线段的斜角:tgα=(y1-y2)/(x1-x2)
2、求已知线段的长度:L=√((y1-y2)^2+(x1-x2)^2)
3、求第三点的坐标:
x3=x2+L*cos(α+60);y3=y2+L*sin(α+60)
解题思路:dfs模拟,用ans记录点,最后排序,C,D,E可以根据向量的方法从A,B得到。
#include <cstdio> #include <vector> #include <cmath> #include <altorithm> using namespace std; const double sq3 = sqrt(3.0); struct point { double x, y; }; vector<point> ans; double T; bool cmp (const point& A, const point& B) { if(fabs(A.x - B.x) > 1e-6) return A.x < B.x; return A.y < B.y; } double dis(double x, double y) { return sqrt(x * x + y * y); } void dfs (point A, point B) { double len = dis(A.x - B.x, A.y - B.y); if (len / 2 < T) return; point C, D, E; C.x = B.x + 3 * (A.x - B.x) / 4; C.y = B.y + 3 * (A.y - B.y) / 4; D.x = B.x + (A.x - B.x) / 4; D.y = B.y + (A.y - B.y) / 4; E.x = (A.x + B.x)/2 + sq3/4*(A.y - B.y); E.y = (A.y + B.y)/2 - sq3/4*(A.x - B.x); ans.push_back(C); ans.push_back(D); ans.push_back(E); dfs(C, E); dfs(E, D); } int main() { int cas = 1; point A, B; while(scanf("%lf%lf%lf%lf%lf", &A.x, &A.y, &B.x, &B.y, &T) == 5 && T >= 1) { ans.clear(); ans.push_back(A); ans.push_back(B); dfs(A, B); printf("Case %d:\n", cas ++); sort(ans.begin(), ans.end(), cmp); printf("%lu\n", ans.size()); for (int i = 0; i < ans.size(); i++) printf("%0.5lf %0.5lf\n", ans[i].x, ans[i].y); } return 0; }
已知等边三角形两点的坐标.求第三点坐标, 已知X(x1,y1), Y(x2,y2) 求Z(x3,y3), x3=? y3=?
1、求已知线段的斜角:tgα=(y1-y2)/(x1-x2)
2、求已知线段的长度:L=√((y1-y2)^2+(x1-x2)^2)
3、求第三点的坐标:
x3=x2+L*cos(α+60);y3=y2+L*sin(α+60)
相关文章推荐
- IO流 字节流的缓冲区
- [总结]PHP变量常量、流程控制、函数应用
- 009 面向对象二
- iostat查看io使用率
- oralce重装 无法访问临时位置
- mac 远程连接服务器
- mac 远程连接服务器
- Web Service介绍
- VS2010+WDK VC\include\crtdefs.h(550): error C2143
- x265-1.7版本-encoder/encoder.h注释
- 39. Combination Sum leetcode python 2016 new season
- [leetcode]87. Scramble String @python
- 闰年的定义
- mysql中declare语句用法
- C\C++中转义字符集锦
- 008 面向对象一
- R语言系列4
- anacron系统调度说明
- Source model metarobots/product_attribute_source_unit not found for attribute
- 算法之美_源代码发布(1)