matlab-单位圆内射线数次反射
转载自 https://zhidao.baidu.com/question/2268408219692883828.html
先贴代码和放图,然后我再做出一点解释(其实只是觉得这个思路好厉害,所以想保存下来)
%% Draw circle
[cx, cy] = pol2cart(linspace(0, 2*pi, 100), 1);
plot(cx, cy, 'r')
axis equal
hold on %% Init particle - You can modify this
[px, py] = pol2cart(rand()*2*pi, rand());
p = [px; py];
plot(px, py, 'o')
v = rand(2, 1);
v = v/norm(v); %%
R = @(t)[cos(t) -sin(t); sin(t) cos(t)];
P = p;
O = [0; 0]; t = fmincon(@(t)abs(norm(p+t*v) - 1), -1, 1, 0);
p = p+t*v;
for i = 1:10 % iterate 10 times
p = p + 2*(O - p)'*v*v;
P = [P p];
t = atan2(p(2), p(1));
v = R(t) * diag([-1 1]) * R(-t) * v;
end
plot(P(1,:), P(2,:))

这个思路是利用向量来做的。v就是这个方向的单位向量。p就是向量原点。
(O - p)'*v*v; 得到的是 这个向量

R是 光学谐振腔的的凹型镜面的反射矩阵
v = R(t) * diag([-1 1]) * R(-t) * v; 用的就是激光原理里面的这部分内容
之后就是一步一步的迭代了
matlab-单位圆内射线数次反射的更多相关文章
- python 入门基础21 --面向对象_多态、内置方法、反射
内容: 1.接口思想 2.抽象类思想 3.多态 4.内置方法 5.反射 1.接口思想 建立关联的桥梁,方便管理代码 接口类:用来定义功能的类,位继承它的子类提供功能 该类的功能方法一般不需要实现体,实 ...
- 省赛i题/求1~n内全部数对(x,y),满足最大公约数是质数的对数
求1~n内全部数对(x,y),gcd(x,y)=质数,的对数. 思路:用f[n]求出,含n的对数.最后用sum[n]求和. 对于gcd(x,y)=a(设x<=y,a是质数),则必有gcd(x/a ...
- 循序渐进Python3(六) -- 初识内置变量、反射、递归
#python用下划线作为变量前缀和后缀指定特殊变量.稍后我们会发现, #对于程序来说,其中的有些变量是非常有用的,而其他的则是未知或者无用的. #我们总结一下Python中下划线的特殊用法 ...
- SPOJ 3267 D-query(离散化+主席树求区间内不同数的个数)
DQUERY - D-query #sorting #tree English Vietnamese Given a sequence of n numbers a1, a2, ..., an and ...
- Python-老男孩-01_基础_文件IO_函数_yield_三元_常用内置函数_反射_random_md5_序列化_正则表达式_time
Python2.7 缩进统一: 约定 常量 大写 , 变量 小写 判断一个变量在内存中的地址,也能看出是不是一个值 id()函数 >>> x = 'abc' >>&g ...
- C++实现文件内字符数、单词数、行数的统计
先给出github上的代码链接以及项目需求 1. 项目简介 这个项目的需求可以概括为:对程序设计语言源文件统计字符数.单词数.行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处 ...
- 内置函数、反射、__str__、__del__、元类
一.内置函数的补充 isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo: pass obj=Foo() print(isinstance(obj,Foo) ...
- day26 封装、多态、内置函数、反射、动态导入
今日内容 1.封装 什么是封装? 封装从字面意思上看就只将某种东西封起来装好,当我们代码中的某些方法与属性不想让外界进行访问时,就对这些属性进行特殊的处理,使这种属性或者方法不能被外界直接进行访问或者 ...
- SPOJ DQUERY 求区间内不同数的个数 主席树
这题跟HDU3333差不多吧. 离线的做法很简单,不再说了 以前做过. 主席树的做法就比较暴力了.. 什么是主席树呢.. 其实是某种称号. 在该题中的体现是可持久化的线段树. 对于一个数 如果以前没出 ...
随机推荐
- 【开发】iOS入门 - UIViewController学习笔记
iOS里面的UIViewController类似于Android里的Activity. 目前了解到除了基本的UIViewController之外,还有两个比较特别的一个是UINavigationCon ...
- c++中thread的死法
在调用thread后,不调用join()函数时, 线程的两种行为:1)自己管理join()函数 2)生成后不管理,线程完了自己杀死自己detach()函数.使用detach()时,线程比较简单,一般 ...
- 转:Excel—“撤销工作表保护密码”的破解并获取原始密码
在日常工作中,您是否遇到过这样的情况:您用Excel编制的报表.表格.程序等,在单元格中设置了公式.函数等,为了防止其他人修改您的设置或者防止您自己无意中修改,您可能会使用Excel的工作表保护功能, ...
- 猴子分桃—Python
def f(): for i in range(3120,4000): flag = 1 k=i for j in range(5): if i%5==1: i=(i//5)*4 else: flag ...
- JDK11&12 新特性学习
- jmeter的简单http接口用法
1. jmeter的启动:windows下的环境 进入jmeter的并目录双击启动 Mac电脑 进入bin目录找到jmeter.sh 文件 在终端执行./jmeter.sh 或者./jmeter. ...
- 华为4K机顶盒EC6108V9U从原联通更换为电信的IPTV账号成功经验
4K设备直接在淘宝上买30块钱升级4K机顶盒,i视视手机app控制电视和手机投屏 硬件设备:EC6108V9U由X省联通更换为四川电信 采坑经验: 1.要从现有的机顶盒获取mac地址.stbid.ip ...
- FM与PM信号的表现形式
角度调制可以写成如下形式: $u(t)=A_c cos(2\pi f_c t + \phi (t) )$ $A_c cos(2\pi f_c t)$是载波,调制信号控制$\phi (t)$. 对于PM ...
- js 去除左右空格
/*****************************************************Method1*************************************** ...
- SVN迁移到GitLab,保留提交记录
1.下载GitBash 此工具自带git svn命令,无需再下载git-svn工具 2.GitBash终端中输入以下命令 git svn clone svnurl srcPath 3.push本地仓库 ...