hujunhua 发表于 2015-11-2 17:18:08

表正方形和三角形边线的函数

用几何画板做一个动画,如果需要用正方形边上的点来驱动,那么最好正方形的四条边是一个对象,否则就需要做四个动画来衔接。
但是几何画板软件并没有连接、合并线段的命令,也不能定义分段函数,如何实现正方形边界一体化呢?
有两个方法:
一是用近似正方形的曲线,例如:
`\D x^{2n}+y^{2n}=1`(n为2以上的自然数)
n=2和4的图像分别如下左右图:

二是寻找可以完全表示正方形边界的函数,这也不难,例如
`\D\abs x+\abs y=1`的图像如下图左:

当然,在几何画板上实际画以上函数曲线时,方程必须化成参数方程或者极坐标方程,比如`\D\abs x+\abs y=1`化作
`\D\rho=\frac1{\abs{\cos\theta}+\abs{\sin\theta}}`
将这个斜置正方形摆正的方程为`\D\rho=\frac1{\abs{\cos(\theta+\pi/4)}+\abs{\sin(\theta+\pi/4)}}`,图像如上图右。

那么,表正三角形边界的函数是怎样的呢?

wayne 发表于 2015-11-2 22:42:26

我能给出 菱形,等腰梯形的 表达式, 三角形的话,有点困难,:lol

wayne 发表于 2015-11-3 12:41:49

拼凑了好久,总算整出来了~
`\D r(t) = \csc\left(t\ \text{mod}\frac{2\pi }{3}+\frac{\pi }{6}\right)`

kastin 发表于 2015-11-3 13:13:09

其实这样的图像,无论多复杂,都可以用数据点离散依次连接来绘制,matlab就是基于这种方式的,所以任何二维图都可以绘制(无论是隐函数还是参数方程,或者根本没有表达式)。
因为这种方式不依赖于解析性,所以折线也能绘制。比如三角形,正方形,多边形都可以看成是圆的参数方程的离散逼近。将角度离散成n等分,半径若不变,那就是正n边形。不过估计几何画板对这种坐标点相连形式绘图不是很方便,所以只能用函数形式来绘制。、
之所以上面的四边形可以用绝对值的函数来绘制,乃是因为直角坐标系的特征,绝对值就导致对称,正好坐标轴也是对称的,所以就能绘制。这种对称效果带来的副产品就是——线段得以绘制,而一般情况下函数无法绘制线段,这也是三角形无法绘制的原因,因为底边没法封闭。

假如我们构造一个二维正等轴测图的坐标轴(三个轴线互相成120度),那么三角形也很容易绘制,只是这时候就无法用笛卡尔坐标方程表示,得用这种特殊坐标系的方程表示(三个自变量),但是没有软件支持这种坐标系绘图。

综上,如果非得在笛卡尔坐标系内,用函数的形式来绘制三角形,那么必须解决线段的绘制问题,一次对称只能产生射线,而非线段。因此得拓宽函数的概念,才能绘制出三角形。比如楼上给出的同余函数mod,可以利用周期性做到产生线段的效果。第二种就是利用广义函数(类似符号函数sign,Dirac函数,Heaviside函数这样的),我们可以定义一个"正值符号函数"$$\mathrm{Posi}(x)=\begin{cases}1&(x>0)\\
0&(x\leqslant 0)\end{cases}$$那么下面的这种表达式就能产生三角形$$y\,\mathrm{Posi}(y)(y\,\mathrm{Posi}(y)+|x|-\mathrm{Posi}(y))=0$$
Matlab代码:ezplot('y*(y>0)*((y>0)*y+abs(x)-(y>0))',[-1.2,1.2,-0.2,1.2])
效果

wayne 发表于 2015-11-3 13:31:43

蛮好玩的。有谁知道,下面的图像的方程是什么?:lol

hujunhua 发表于 2015-11-3 22:34:02

第一个是`\D\rho=\frac1{\abs{\cos(\theta+\pi/4)}-\abs{\sin(\theta+\pi/4)}}`
正方形的补集,反一个符号。

hujunhua 发表于 2015-11-3 23:04:54

三角形的方程很有启发性,正n边形完全类似可得。
`\D\rho=\sec\left(\theta\ \text{mod}\frac{2\pi}{n}-\frac{\pi}{n}\right)`

chyanog 发表于 2015-11-8 13:18:38

triangleEq[{{x1_,y1_},{x2_,y2_},{x3_,y3_}}]/;y2<y1&&y3<y1:=
With[{
s=Det[{{x1,y1,1},{x2,y2,1},{x3,y3,1}}],
s1=Det[{{x,y,1},{x2,y2,1},{x3,y3,1}}],
s2=Det[{{x,y,1},{x1,y1,1},{x2+x3,y2+y3,2}/2}]
},
Abs]+2Abs==s];
pts={{1,5},{-5,2},{3,-4}};
eq=triangleEq//Simplify
ContourPlot
页: [1]
查看完整版本: 表正方形和三角形边线的函数