前言
上一篇文章
学习
功能
surfer可以计算并展示展示三维代数曲面,
其中有x表示x轴坐标,
y表示y轴坐标,
z表示z轴坐标,
软件内提供“a”,“b”,“c”作为变量(参数)。
支持常规算术运算以及指数。
surfer中支持输入类似于:
1.2*x^2+1.2*z^2-5*(y+0.5)^3*(0.5-y)^3=0 【柠檬方程】
这样的方程来绘制图像:
坐标系里的每一个点由给定的x,y和z值来确定。而相对应的数值去带入相应的变量可以使得上述公式为零,这个点就在曲面上。通过名叫射线追踪的方法,SURFER可以找到所有这样的点;它们叫做方程的零点。所有这些零点组成相应的曲面。——来自surfer
还有一些特性:
如果方程中不包含参数 y和 z,这意味着y和z不受限制,可以取任意值。方程x=0包含了所有无论x坐标为0且y和 z可以取任何数的点.因此它就是 yz平面:
然而为什么一个无限延伸的平面看起来像个实心圆?这是因为我们用程序来展示平面,程序里展示的曲面总是在一个隐形球面的内部,我们只能看到曲面在球面内部的部分,否则,它无法在屏幕显示出来。——改编自surfer
在右侧滑杆栏中可以调整相关参数。
可以调整放大倍数zoom。
但是这里的缩放是在一个隐形球面中进行的,刚开始使用时可能会有些奇怪。
除了可以调整zoom,这里还可以调整参数的值(如果代数式含参)。
在左侧“颜色”一栏可以调整前景色和后景色,
能够使图像两面呈现不同的色彩,
为代数式,
添加了一份艺术色彩。
在surfer中的初步几何平面(二维)内的代数尝试
surfer比较简 陋 洁,没有新建文件的功能,
我们只能通过实例来新建。
surfer文件的后缀是*.jsurfer
由代数式x·y=0,
我新建了一个文件,内容如下:
#jSurfer surface description
#Tue Apr 30 17:15:23 CST 2024
back_material_specular_intensity=0.5
camera_type=ORTHOGRAPHIC_CAMERA
light_position_7=0.0 0.0 0.0
light_position_6=0.0 0.0 0.0
light_position_5=0.0 0.0 0.0
light_position_4=0.0 0.0 0.0
light_position_3=0.0 0.0 0.0
light_position_2=0.0 -100.0 100.0
camera_fov_y=60.0
light_position_1=100.0 100.0 100.0
light_position_0=-100.0 100.0 100.0
front_material_color=0.1254902 0.8784314 0.827451
background_color=1.0 1.0 1.0
light_intensity_7=1.0
front_material_ambient_intensity=0.4
light_intensity_6=1.0
scale_factor=0.5
light_intensity_5=1.0
light_intensity_4=1.0
light_intensity_3=1.0
front_material_specular_intensity=0.5
light_intensity_2=0.3
light_intensity_1=0.7
light_intensity_0=0.5
rotation_matrix=0.9982771061621802 0.0037608024691454097 -0.05859070196552772 0.0 -0.001255924891183464 0.9990879718227635 0.04273143638543331 0.0 0.05869812742773203 -0.04258456770194343 0.9973709665955084 0.0 0.0 0.0 0.0 1.0
light_color_7=1.0 1.0 1.0
light_color_6=1.0 1.0 1.0
front_material_diffuse_intensity=0.8
light_color_5=1.0 1.0 1.0
light_color_4=1.0 1.0 1.0
light_color_3=1.0 1.0 1.0
light_color_2=1.0 1.0 1.0
light_color_1=1.0 1.0 1.0
light_color_0=1.0 1.0 1.0
light_status_7=OFF
light_status_6=OFF
light_status_5=OFF
light_status_4=OFF
front_material_shininess=30.0
light_status_3=OFF
light_status_2=ON
light_status_1=ON
light_status_0=ON
camera_height=2.0
surface_equation=x*y
camera_transform=1.0 0.0 0.0 -0.0 0.0 1.0 0.0 -0.0 0.0 0.0 1.0 -1.0 0.0 0.0 0.0 1.0
back_material_ambient_intensity=0.4
back_material_color=0.06666667 0.4509804 0.43137255
back_material_shininess=30.0
back_material_diffuse_intensity=0.8
这个文件的最关键内容在底部:
surface_equation=x*y
这是描述代数式的。
做完准备工作后,我准备开始探索了。
如果从正面观察x*y=0,
我们就可以看到一个“坐标轴”。
只有从正面才可以,因为surfer是三维绘制。
我现在想要绘制一次函数y=2x+3.
也就是说y-2x-3=0
加上坐标轴,也就是这样:
x*y*(y-2*x-3)=0
注意:surfer不可省略*
绘制完毕。
如果我要绘制反比例函数y=3/x.
那么y-3/x=0.
但是surfer不支持除号,
所以需要化为:
x*y-3=0
再来一个带指数的运算。
y=x²
化为surfer能够读取的格式:
y-x^2=0
ok了。
再来试试参数。
就用这个抛物线为例。
简单变换代数式:
x*y*(y-x^2-b)=0
这里添加了一个参数b。
此时b=0.
此时b=0.5.
由于surfer特性,b不能为负数。
要想做出负数效果,必须将-b改为+b。
像这样:
x*y*(y-x^2+b)=0
负数b的效果。
怎么样?是不是很简单?
这样你就掌握了surfer的初步运算逻辑。
结语
今天简单探索了一下函数。
相信你能够有更多的了解。
我将继续学习三维绘制的内容 ,
让我们在学习的道路上走越nb!
好好学习,天天向上!
期待我的下一篇文章!