- 浏览: 393079 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (229)
- java编程 (4)
- java实用程序 (2)
- 算法设计 (34)
- 数据库 (8)
- ACM模板 (12)
- 技术术语 (1)
- java_web (3)
- php (22)
- eclipse (3)
- linux (25)
- linux命令使用心得 (3)
- web服务器 (8)
- IT知识 (2)
- 前端技术 (17)
- 开源软件 (5)
- vim (3)
- linux多线程 (9)
- web开发经验 (3)
- lua (5)
- linux编程 (3)
- smarty (1)
- mysql (4)
- Hive (2)
- 数据挖掘 (9)
- python (2)
- 生活 (1)
- C++ (2)
- 计算机 (1)
- objective-c (11)
- css (2)
- 游戏 (1)
- Mac (1)
最新评论
-
lr544463316:
我的怎么不行呀.....
Mysql Access denied for user ''@'localhost' to database 的一种解决方法 -
babaoqi:
使用时需要注意group_concat函数返回值的最大长度=g ...
mysql中的group_concat函数 -
代码能力弱成渣:
可以帮我看下我的代码么?我自己写的sam,也有ac过题的,但是 ...
求两个字符串的最长公共连续子序列(SAM实现) -
atgoingguoat:
有1000个?不过还是收藏下。
jquery常用的插件1000收集(转载)
source: http://acm.bupt.edu.cn/onlinejudge/newoj/showProblem/show_problem.php?problem_id=244
title: A Letter to Programmers
/* 坐标变换的公式+矩阵快速幂 */ #include <iostream> #include <cmath> using namespace std; const int N = 105; const double pi = acos(-1.0); const double eps = 1e-4; struct point{ double x, y, z; point(double _x=0, double _y=0, double _z=0):x(_x), y(_y), z(_z){}; void read(){ scanf("%lf%lf%lf", &x, &y, &z); } }; //三维点的变换矩阵,点做变换的时候是乘在矩阵的右边的,所以,后来的变换矩阵应该乘在 //原有矩阵的左边。 struct mat{ static const int N = 4; double v[N][N]; int n; mat(){ n = N; } void setv(double _v[N][N]){ int i, j; for(i = 0; i < N; i++){ for(j = 0; j < N; j++){ v[i][j] = _v[i][j]; } } } //点绕轴(0,0,0)->(x,y,z)旋转(旋转方向为从 点(x,y,z)往(0,0,0)) //看是逆时针方向.如果所绕的轴的一个端点不在原点,则可以移到端 //点再移回来 void rotate(double x, double y, double z, double ang){ double cosa = cos(ang), sina = sin(ang), len; len = sqrt(x*x+y*y+z*z); x/=len; y/=len; z/=len; double a[N][N] = { cosa+(1-cosa)*x*x, (1-cosa)*x*y-z*sina, (1-cosa)*x*z+y*sina, 0, (1-cosa)*x*y+z*sina, cosa+(1-cosa)*y*y, (1-cosa)*y*z-x*sina, 0, (1-cosa)*x*z-y*sina, (1-cosa)*y*z+x*sina, cosa+(1-cosa)*z*z, 0, 0, 0, 0, 1 }; setv(a); } //移动矩阵,点(x0,y0,z0)变为(x0+x,y0+y,z0+z) void translate(double x, double y, double z){ double a[N][N] = { 1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1 }; setv(a); } //伸缩矩阵,点(x0,y0,z0)变为(x0*x,y0*y,z0*y) void scale(double x, double y, double z){ double a[N][N] = { x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1 }; setv(a); } //对点st应用该矩阵 point change(point st){ double ds[N] = {st.x, st.y, st.z, 1}, ans[N-1]; int i, j; //点做矩阵变换的时候是点是乘在矩阵的右边的 for(i = 0; i < N-1; i++){ ans[i] = 0; for(j = 0; j < N; j++){ ans[i] += v[i][j] * ds[j]; } } return point(ans[0], ans[1], ans[2]); } //矩阵乘法 mat operator*(mat tm){ mat ans; int i, j, k; for(i = 0; i < n; i++){ for(j = 0; j < n; j++){ ans.v[i][j] = 0; for(k = 0; k < n; k++){ ans.v[i][j] += v[i][k] * tm.v[k][j]; } } } return ans; } //矩阵幂 mat operator^(int k){ mat ans, org = *this; ans.scale(1., 1., 1.); //初始化为单位矩阵 for(; k; k >>= 1, org = org * org){ if(k&1){ ans = ans * org; // ans = org * ans; } } return ans; } }; char ts[N]; //ts[i]为'm'表示矩阵,为'r'表示重复 mat ms[N]; int ks[N]; int main() { // freopen("in.txt", "r", stdin); int n, top, i, k; char op[20]; double tx, ty, tz, d; mat m; point tp; while(~scanf("%d", &n) && n > 0){ top=-1; while(true){ scanf("%s", op); if(strcmp(op, "translate") == 0){ scanf("%lf%lf%lf", &tx, &ty, &tz); ms[++top].translate(tx, ty, tz); ts[top] = 'm'; }else if(strcmp(op, "scale") == 0){ scanf("%lf%lf%lf", &tx, &ty, &tz); ms[++top].scale(tx, ty, tz); ts[top] = 'm'; }else if(strcmp(op, "rotate") == 0){ scanf("%lf%lf%lf%lf", &tx, &ty, &tz, &d); d = (d * pi) / 180.0; ms[++top].rotate(tx, ty, tz, d); ts[top] = 'm'; }else if(strcmp(op, "repeat") == 0){ scanf("%d", &k); ks[++top] = k; ts[top] = 'r'; }else if(strcmp(op, "end") == 0){ m.scale(1, 1, 1); while(top >= 0 && ts[top] != 'r'){ m = m * ms[top]; top--; } if(top < 0) break; m = m ^ ks[top]; ms[top] = m; ts[top] = 'm'; } } for(i = 0; i < n; i++){ tp.read(); tp = m.change(tp); printf("%.2f %.2f %.2f\n", tp.x + eps, tp.y + eps, tp.z + eps); } printf("\n"); } return 0; }
发表评论
-
升序数组中求一个key出现的次数
2013-01-09 23:08 1124算法思路: 在排好序的数组,相同的数字是排列在一起的,所以只需 ... -
判断单链表是否有环
2013-01-08 19:07 939算法思路: 指针p1和p2的起始值均为链表的表头,指针p1每次 ... -
hdu3684
2011-11-15 20:11 951/* 刚开始打了个记录上下左右四个点的,一直tle。 ... -
hdu3686
2011-11-14 20:43 1050/* 无向图边的双连通分量,在同一个连通分量里的边之间 ... -
poj3968
2011-11-14 04:45 1429source: http://poj.org/problem ... -
uva2819
2011-11-13 02:20 916source: http://livearchive.onli ... -
manacher算法
2011-11-11 00:06 2446const int LEN=110005; const ... -
hdu4118
2011-11-09 21:53 1212枚举每条边最多被经过的次数即可 #include ... -
hdu4115
2011-11-09 16:27 1052source: http://acm.hdu.edu.cn/ ... -
uva(Transitive Closure)
2011-11-08 14:45 931source: http://livearchive.onli ... -
zoj3500
2011-11-07 17:41 972求两个球的体积交或者并 #include <cs ... -
zoj3545
2011-11-04 18:18 878/* AC自动机 相当暴力的 解法: mark[i ... -
zoj3190
2011-11-04 17:34 1333/* * AC自动机,先对资源串和病毒串构成的字符串 ... -
zoj3228
2011-11-04 16:12 962/* * AC自动机,每个节点 添加一个d表示节点代 ... -
poj3691(DNA Repair)
2011-11-04 13:18 1498/* AC自动机,增设虚拟节点,求长度为n的字符串中包 ... -
hdu2825
2011-11-04 11:53 1015/* AC自动机,增设虚拟节点,求长度为n的字符 ... -
hdu4095
2011-11-03 13:19 1039/* 第一步,构建BST,用第一个数作为bst的 ... -
zoj3540
2011-11-02 21:33 949/* 其实就是把总共的 放置次数减去不能放置的那些就行 ... -
poj1741(树的分治,基于边的 分治)
2011-11-02 20:25 3372/* 树基于边的分治算法,计算树中距离小于等于k的点 ... -
hdu2939
2011-10-29 18:36 876source: http://acm.hdu.edu.cn/s ...
相关推荐
一、ERA5数据下载,deepseek提问全图
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
该项目是一款基于Spring Boot和VUE框架构建的校园闲置物品在线交易平台源码,总计包含732个文件,涵盖了丰富的资源类型,包括226个GIF图片、148个JavaScript文件、87个Java文件、64个HTML文件、46个JPG图片、42个CSS文件、28个PNG图片、16个XML文件、14个LESS和SCSS样式表文件。该平台的设计与开发旨在为校园内的学生提供一个便捷的闲置物品交流与交易环境。
停车位状态检测系统源码和数据集:改进yolo11-DCNV2-Dynamic
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
树莓派人脸识别(dlib,opencv自带的算法)
法国Embouchure地区沉积物岩性数据集 内容 该数据集由O. Puertas在2014年发布,详细记录了法国Embouchure地区的EMBOU岩芯沉积物的岩性特征。数据集中包含了39个数据点,提供了关于该地区沉积环境的重要信息。欲了解更多信息,请访问"PANGAEA数据库中的原始数据" ()。
使用android studio实现科大讯飞的aikit语音唤醒功能, 纯净版最新版语音唤醒功能
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
华为整理题
【GO】基于go实现的生日提醒定时任务_pgj
沉积物岩心KS03的岩石学数据 内容 这份数据集由Nelle, O在2014年发布,详细记录了沉积物岩心KS03的岩石学特征。数据集包含了15个数据点,提供了对特定地质样本的深入分析。欲了解更多信息,请访问"此处" ()以查看完整的数据集。
内容: 德国海洋研究中心(GEOMAR)的Christian Hensen于2014年发布的关于沉积物核心GeoB9040-1的孔隙水地球化学数据。该数据集包含了147个数据点,提供了详细的孔隙水成分分析结果。通过访问以下链接可获取完整的数据集信息:"" ()。此研究对于理解特定海洋沉积环境中的生物地球化学过程具有重要意义。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
【前端】基于rasa的机器人的前端项目
C++ 进行AI图像超分的Demo,NuGet拉取OnnxRuntime和OpenCV环境即可运行。 注意:资源应该是免费下载的,如果需要积分或无法下载,请联系我。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
震动传感器接线图