怎么算那个雪花的坐标呢?

习总 发布于 2013/04/24 20:33
阅读 732
收藏 0

@韩细 你好,想跟你请教个问题:看到这个javafx绘制雪花曲线,没有看太懂,知道了A(x1,y1)和B(x2,y2)的坐标,怎么把M点的坐标表示出来呢?其他知道的同志们也来说说吧

图中的四条线段都相等,C、D的坐标我知道怎么算


加载中
0
Leperca
Leperca

连接CD,过点M做CD垂线于H,于是可以得到H(AB中点)的坐标[(x1+x2)/2,(y1+y2)/2],为方便记为[x3,y3],这里就用方括号了,能明白意思就行,然后可以记AC=CM=MD=BD为d,MH为h,记AB为长度L=sqrt[(y2-y1)^2+(x2-x1)^2],于是CH=1/2*L-d。在直角三角形CMH中由勾股定理得到:d^2=h^2+(1/2*L-d)^2 ,这里有一个关键的地方,如果d为未知量的话,是无法得知M的具体坐标的,可以想像四根长度为d的四根木棍,如果d未知的话,可以通过变化ACM,来使得不同的d满足AB长度为L的条件。因此如果d未知,M点的坐标无法确定,只能得到关于M坐标x,y的一个方程组以及x,y各有一定的取值范围。如果d为已知,就可以有以上勾股定理的方程得到h的大小。最后得到两个方程组:EQ1:(x-x3)^2+(y-y3)^2=h^2  EQ2:(x-x3)(x2-x1)+(y-y3)(y2-y1) 对于这个方程的得到可以认为MH向量与AB向量垂直,于是[(x-x3),(y-y3)]内积[x2-x1,y2-y1],两个方程【x3,y3,h都为已知量量了】,两个未知量且方程都为一次线性易得解~~~这是通俗的解法,题中的y1,y2变化,AC,CM,MD,DB长度不同下也可以类似解得,也就不需要考虑特殊的情况了。总体整理下,对于类似解析上的问题一般涉及到的次数最高仅为2次问题,即使椭圆、双曲、抛物线也最多需2次的问题;有个注意点是勾股定理的理解可以从圆的方程形式来考虑,当然也可以反过来~同样的问题,如果转变考虑问题的角度的话,可以有极坐标的形式,用长度和转过的角度来重新解类似的问题。当然涉及的问题如果从更深的角度去考虑的话,就如同理论力学里的设几个需求解的正则量;当然问题可以推广到三维以至更高维度的情况,涉及的都时解方程的思想,将几何问题解析化。哈哈,空间可以扭曲,同样如果考虑时间与空间相互非独立的时候,也就是空间量与时间量相互纠缠的问题,也就是时空的扭曲了。当然,也可以从其它的角度来看,虽然题目里涉及的都是初等数学的内容范畴,如果从高等数学的角度来看的话,也可以从更高的角度从问题得到有趣的结论。如果涉及到对称性的问题,从群论的角度来看,穿插矩阵代数的计算,内容就更多了。乱七八糟的说了一堆东西,其实问题这个对象,解决的同时可以收获知识,用的手段越多得到的内容也越多;也就更容易从问题中看到另外的问题,于是拓展下去的话,就是整整一条数理以及逻辑的整条链子~~~请诸位不吝指教。

习总
习总
多谢啦,我觉得解方程有点复杂了,关键都是符号,不是具体的数,想尽量用比较初等的方法来做
0
loyal
loyal
额,全等三角形啊,你还算不出来?
习总
习总
是啊,中学的知识都忘了
0
书一
书一
通过起点坐标,长度, 和角度计算线的终点坐标
0
loyal
loyal
把三角形的高画出来,不就两个直角三角形么,然后求高不就完了啊?勾股定理啊!!!!!!!!!!!!
loyal
loyal
回复 @习总 : 额,这又有什么关系?给两个点就可以求坐标了,和斜不斜有什么关系?晕!你脑子是2D的啊?你脑子单线程啊?
习总
习总
其实没这么简单,我画的图是平的,线段AB还有可能是斜的
0
逝水fox
逝水fox
解析几何好歹也是做图形的必备哦...
0
0
飘逸的逸
飘逸的逸
y1和y2相等吗?
习总
习总
这个是任意的,可以视为不相等
0
Leperca
Leperca
回头看了看关于 javafx绘制雪花曲线的问题,感觉上述回答略有冗余,但是仅仅当作一般性解题的思路来说,也不失罗嗦的益处,请楼主可怜我打了这么多字,不要喷我~~~哈哈。
Leperca
Leperca
@loyal 不是说你~~~哈哈
loyal
loyal
回复 @Leperca : 最后一句什么意思???我貌似没有说反感吧?????????????????????说我呢?
Leperca
Leperca
@loyal 表示单纯从数学的角度来看整个问题,如果雪花曲线再复杂点的话,原来的说法都有些问题,授人以鱼,不如授人以渔。况且感觉做个雪花曲线都是成品,而且提醒,少用点到直线距离公式与两直线垂直,两斜率乘积为负1,虽然同样能够得到两个方程;但是花去了更多的计算量,还记得直线x=某个数的时候,这条直线不能够用斜率表示出吧,此时斜率为无穷大,会增加漏解和分类讨论的负担,如果放到计算机中运算的话;如果发生后期要求的变动,代码重构的话,如果不注意改动的话,就很容易出现bug了啦,最好有好的数学习惯吧。多说,总会引起别人的反感,这里是个是非之地,匿了
loyal
loyal
确实有点冗余了,但思路基本是正确的方向,还可以简化不少...
0
BENNEE
BENNEE
哎..我的尺子不见了,本想借你
0
习总
习总

再补一张图,不然很多人以为求个高就行了,

Leperca
Leperca
回复 @习总 : 我想说,上图的内容,在我的解答里就已经给出了,可否认真循着我的思路来看一看,不要感觉看上去繁杂就过去了,只是省略了点坐标的最后表达式,仅仅需要认真地去看一看,大哥,请认真拿着笔和草稿纸来算一算。
loyal
loyal
回复 @习总 : 坐标就是变量啊,有什么关系呢?代入即可.
习总
习总
回复 @loyal : 但是坐标就变了啊
习总
习总
回复 @Windoze : 这个方法最简单,其实我想用中学的方法做
loyal
loyal
回复 @Windoze : 这么做也行.
下一页
返回顶部
顶部