用mathematica可视化几何难题
我正试图找出一种方法,沿着顶点为a、B和C的等边三角形的边,独立地移动两个点X和Y。还需要考虑一些碰撞规则: (1) 如果X在一个顶点上,比如说顶点a,那么Y就不能在a上或在其相邻的边上。i、 例如,Y只能位于顶点B或C或边BC上 (2) 如果X在一条边上,比如AB,那么Y不能在A、B上,也不能在A和B附近的任何边上。也就是说,Y必须在顶点C上 我已经知道了如何使用一对滑块沿三角形移动两点,但我不知道如何实现碰撞规则。我尝试使用Slider的排除选项,但结果并不是我所期望的。我更喜欢沿三角形拖动点,而不是使用滑块,因此如果有人知道如何做,这将是有益的。理想情况下,我能够 将两个点从顶点移动到任意一条边,而不是在其中一条边上停止。这是到目前为止我的代码用mathematica可视化几何难题,math,dynamic,wolfram-mathematica,visualization,Math,Dynamic,Wolfram Mathematica,Visualization,我正试图找出一种方法,沿着顶点为a、B和C的等边三角形的边,独立地移动两个点X和Y。还需要考虑一些碰撞规则: (1) 如果X在一个顶点上,比如说顶点a,那么Y就不能在a上或在其相邻的边上。i、 例如,Y只能位于顶点B或C或边BC上 (2) 如果X在一条边上,比如AB,那么Y不能在A、B上,也不能在A和B附近的任何边上。也就是说,Y必须在顶点C上 我已经知道了如何使用一对滑块沿三角形移动两点,但我不知道如何实现碰撞规则。我尝试使用Slider的排除选项,但结果并不是我所期望的。我更喜欢沿三角形拖动
MyTriangle[t\uz]:=
分段[{{-1,0}+(t/100){1,Sqrt[3]},
100>t>=0},{{0,Sqrt[3]}+(t/100-1){1,-Sqrt[3]},
200>t>=100},
{{1,0}+(t/100-2){-2,0},300>=t>=0}]
排除的[x]:=\[分段]{
{Range[0,99]~Join~Range[201299],x==0},
{Range[0199],x==100},
{Range[101299],x==200},
{Range[0199]~Join~Range[201299],0
{范围[1299],100
{Range[0,99]~Join~Range[101299],200
}
{动态[t],动态[x]}
{Slider[Dynamic[t],{0299,1},排除->动态[excluded[x]],动态[t]}
{滑块[动态[x],{0299,1},排除->动态[排除[t]],动态[x]}
动态[图形[{PointSize[Large],点[MyTriangle[t]],
点[MyTriangle[x]],
行[{-1,0},{1,0},{0,Sqrt[3]},{-1,0}]},
PlotRange->{{-1.2,4.2},{-.2,2}]]
像这样的东西怎么样:
MyTriangle[t_]:=Piecewise[{
{{-1,0}+t {1,Sqrt[3]},1>t>=0},
{{0,Sqrt[3]}+(t-1) {1,-Sqrt[3]},2>t>=1},
{{1,0}+(t-2) {-2,0},3>=t>=0},{0,True}}]
及
列[{
{Slider[Dynamic[x],{0,3,01}],Dynamic[x]},
{Slider[Dynamic[y],{0,3,01}],Dynamic[y]},
动态[x=Mod[x,3];其中[
x==0,其中[0。
Column[{
{Slider[Dynamic[x], {0, 3, .01}], Dynamic[x]},
{Slider[Dynamic[y], {0, 3, .01}], Dynamic[y]},
Dynamic[x = Mod[x, 3]; Which[
x==0.,Which[0.<=y<1.,y=1.,2.<y<=3.,y=2.],0.<x<1.,y=2.,
x==1.,Which[1.<=y<2.,y=2.,0.<y<=1.,y=0.],1.<x<2.,y=0.,
x==2.,Which[2.<=y<3.,y=0.,1.<y<=2.,y=1.],2.<x<3.,y=1.];
Graphics[{PointSize[Large], Point[MyTriangle /@ {x, y}],
Line[{{-1, 0}, {1, 0}, {0, Sqrt[3]}, {-1, 0}}]}]]}]