分页: 2 / 3
#21 Re: 贴个图
发表于 : 2023年 11月 5日 01:04
由 gmo
TheMatrix 写了: 2023年 10月 29日 20:52
漂亮啊!
花了我两天的时间写程序。而思考这个程序,花了长得多的时间。应该有几个月了。
外行瞎问一句,这个程序用gnuplot就是套用系统demo改改,为什么用py需要这么长时间?
#22 Re: 贴个图
发表于 : 2023年 11月 5日 09:16
由 TheMatrix
gmo 写了: 2023年 11月 5日 01:04
外行瞎问一句,这个程序用gnuplot就是套用系统demo改改,为什么用py需要这么长时间?
那主要是因为我不会用gnuplot。:)
不过我看了一下gnuplot。感觉和python matplotlib区别并不大。这个程序的难点主要有两个:
1,曲线的点分布。一般demo都是自变量均匀分布,而在曲线弧长上分布并不均匀,会造成某些地方的断续。我这个程序主要解决的就是这个问题。
2,遮挡,shading,光影。matplotlib画曲面只能通过transparency或者叫opaque来调整,gnuplot好像也差不多。曲线在球面上的这种问题,不能用这种方法解决。应该是用OpenGL shading的方法。
不过我主要是为了学习椭圆曲线。画图算是一个有趣的digression,可能不会花时间去学OpenGL。
#23 Re: 贴个图
发表于 : 2023年 11月 5日 09:29
由 FoxMe
明白了。怎么解释y=x
3在无穷远点是cusp?我也记得,但是忘了为啥。
TheMatrix 写了: 2023年 11月 4日 21:54
又看了一下。这个和我画的是一样的。都是齐次方程在球面上的截取。因为球面是P
2(R)的double cover,所以它也基本代表了齐次方程在P
2(R)上的形象。
y=x
3在球面上有cusp是对的。因为那个点正是无穷远点。y=x
3在无穷远点是cusp。
#24 Re: 贴个图
发表于 : 2023年 11月 5日 09:33
由 FoxMe
直纹面能不能画出来?哈哈
TheMatrix 写了: 2023年 10月 29日 22:02
这是好问题啊。方程虽然和z无关,但是要研究方程在无穷远点的性质,也就是渐近线的性质,最方便的办法,就是把它齐次化。比如
y
2=x
3-x,
变成
y
2z=x
3-xz
2
这样变了之后,如果(x,y,z)是解,那么λ(x,y,z)也是解,所以齐次方程的解是有直纹面构成的。
而如果用z=1平面截取这个齐次方程的解的话,得到的曲线就是原方程非齐次方程的解。
所以齐次化之后,信息不减少,只增多。增多的是什么呢?就是无穷远点的那一点:在齐次方程中,无穷远点由[0,1,0]这点所延申的直线代表 - 这条直线和z=1平面不相交的 - 可以认为相交于无穷远点。这些名词有点令人迷惑,但是在齐次方程中,这些词汇可以去掉。[0,1,0]所代表的直线,只是齐次方程直纹面解中的一个,和其他任何直线没有什么不同。也就是把“无穷远点”这种令人迷惑的概念化解了。
为什么要研究无穷远点?虽然只少了一点,但是在拓扑中,少了一大块。想想什么是无穷远点的邻域。这点的邻域去掉的话,还剩多少。这个地方是数学中的theme,有很深的理由,不容易说清楚。我先只能说这么多。
#25 Re: 贴个图
发表于 : 2023年 11月 5日 09:38
由 TheMatrix
FoxMe 写了: 2023年 11月 5日 09:29
明白了。怎么解释y=x
3在无穷远点是cusp?我也记得,但是忘了为啥。
这么看:
先齐次化:yz
2=x
3。
然后set y=1,相当于转个方向看这个曲线:z
2=x
3。
它在(x,z)=(0,0)点是一个cusp。
#26 Re: 贴个图
发表于 : 2023年 11月 5日 09:41
由 TheMatrix
FoxMe 写了: 2023年 11月 5日 09:33
直纹面能不能画出来?哈哈
肯定能。我试过,但是效果很不好。
其实画直纹面,对这个问题是很有意义的。因为直纹面才是这个问题里面真正的“物体”。
如果能3D打印出来就更好了。这就是真正的形象化的学数学了。
#27 Re: 贴个图
发表于 : 2023年 11月 5日 10:50
由 FoxMe
明白了。这么看,球面投影的意义就很明显了。终于体会到projective variety的好处了。
TheMatrix 写了: 2023年 11月 5日 09:38
这么看:
先齐次化:yz
2=x
3。
然后set y=1,相当于转个方向看这个曲线:z
2=x
3。
它在(x,z)=(0,0)点是一个cusp。
#28 Re: 贴个图
发表于 : 2023年 11月 6日 12:39
由 TheMatrix
研究了一下。我这个点线3D图,叫wireframe。这种图静态没法看,因为后面本应被遮挡的线也能看见。动起来还是能看,但是也比较乱。
有遮挡的3D图,应该叫surface。每一块表面,可以叫face,或者叫patch,名字也是很合理的。前面的patch可以遮挡后面的patch,这个概念是很自然的。视觉效果就好多了。
gnuplot 有遮挡效果的 surface:
python matplotlib surface:
还是gnuplot的surface看着清楚。matplotlib的surface,调了一下颜色,线宽,color map,还是乱。不过它能用鼠标抓住直接旋转。动画也不用做了。
但是surface上画曲线,这个问题仔细想一下,相当的不容易。surface和曲线不能是两个独立的object,否则会互相遮挡。把surface设成半透明的,这也不好。效果和wireframe差不多了。道理上也是不对的。
一种方法是把曲线的每一段作为surface patch的一个边,那需要把surface的patch重新划分,这很复杂。
另一种方法是OpenGL的texture方式,相当于贴膜。这个方法也有问题。
#29 Re: 贴个图
发表于 : 2023年 11月 6日 14:05
由 TheMatrix
matplotlib球面看着还可以。没有gnuplot那么清爽,但是也还可以。如果上面能画上曲线就好了。

#30 Re: 贴个图
发表于 : 2023年 11月 7日 10:50
由 TheMatrix
TheMatrix 写了: 2023年 11月 6日 12:39
一种方法是把曲线的每一段作为surface patch的一个边,那需要把surface的patch重新划分,这很复杂。
另一种方法是OpenGL的texture方式,相当于贴膜。这个方法也有问题。
看来我想复杂了。这个图最后用Python Plotly解决了。
Matplotlib据说不是true 3d。它没有把line当成true 3d object。而surface是true 3d object。在surface前面画线看不见,因为它的z-order是不对的。
据说Plotly是true 3d。所以我试了一下Python Plotly,果然。直接在surface上画线就行了。我想复杂了。
Plotly的3d图也能鼠标转动。想看什么角度就看什么角度。效果相当不错。
以后我改用Plotly了。
#31 Re: 贴个图
发表于 : 2023年 11月 7日 17:37
由 TheMatrix
再来个光滑球面,无坐标线的。看着多清爽啊:
Plotly太牛了。
#32 Re: 贴个图
发表于 : 2023年 11月 11日 18:52
由 TheMatrix
TheMatrix 写了: 2023年 11月 5日 09:41
肯定能。我试过,但是效果很不好。
其实画直纹面,对这个问题是很有意义的。因为直纹面才是这个问题里面真正的“物体”。
如果能3D打印出来就更好了。这就是真正的形象化的学数学了。
直纹面的来了。
这个是 y
2=x
3-x 的齐次化直纹面,绕z-轴旋转。
这个还是matplotlib画的点线图,没有遮挡效果,看着比较乱。但是动起来还能看。
从这个动图可以看出,曲线上的点,我基本上做到了均匀分布。
比我以前画的一个效果好。因为以前那个没有做到均匀分布。另外这个图直线都截取到单位球面,比较统一。
中间一片像个木耳。

#33 Re: 贴个图
发表于 : 2023年 11月 11日 19:22
由 TheMatrix
这个是单叶的。y
2=x
3+x
2-x+2。

#34 Re: 贴个图
发表于 : 2023年 11月 12日 08:59
由 TheMatrix
还是Plotly好:

#35 Re: 贴个图
发表于 : 2023年 11月 12日 09:35
由 FoxMe
不错不错,专业水准。终于看到全貌了。
丘成桐是不是就研究类似这样的曲面?
#36 Re: 贴个图
发表于 : 2023年 11月 12日 09:47
由 TheMatrix
FoxMe 写了: 2023年 11月 12日 09:35
不错不错,专业水准。终于看到全貌了。
丘成桐是不是就研究类似这样的曲面?
我也是第一次看到全貌。
不过这是实数空间上的,复数空间上的,只能靠想象了。丘成桐研究的应该都是复数空间的。Calabi-Yau空间。
#37 Re: 贴个图
发表于 : 2023年 11月 12日 14:16
由 TheMatrix
再加个wireframe就完美了:

#38 Re: 贴个图
发表于 : 2023年 11月 12日 15:51
由 FoxMe
赞
#39 Re: 贴个图
发表于 : 2023年 11月 14日 20:11
由 TheMatrix
Plotly也能转起来。但是存图之后效果就不行了。

#40 Re: 贴个图
发表于 : 2023年 11月 15日 13:23
由 FoxMe
超赞!