Forgot password?
 Create new account
Search
View: 103|Reply: 2

[几何] billiard table 从角点开始45°发球,轨迹自交点数

[Copy link]

3150

Threads

8388

Posts

610K

Credits

$\style{scale:11;fill:#eff}꩜$

Credits
65413
QQ

Show all posts

hbghlyj Post time 2024-3-16 22:11 |Read mode
在 $p:q$ ($p,q\inZ_+$) 的矩形台球桌上,方向 45 度,从角点开始发球,轨迹有多少个自交点?

7:5有12个交点:
import graph;
picture pic;
size(100);

path bill = box((0,0),(7,5));

draw(bill);

pair s = (1e-3,1e-3), db, dt = (1,1), e = s+1e2*dt;
path traj = s--e;
path path = s;
real [] c;

for(int i:sequence(11)) {

  c = intersect(bill, traj);
  e = point(traj, c[1]);
  db = dir(bill, c[0]);
  path = path--e;  

  dt = -dt + 2*dot(dt,db)*db;

  s = e;
  e = s + 1e2*dt;

  for(pair a:intersectionpoints(s+1e-2*dt--e, path)){dot(pic,a,blue);}
  traj = (s+dt)--e;
}
draw(path,red);
add(pic);

7:3有6个交点:
import graph;
picture pic;
size(100);

path bill = box((0,0),(7,3));

draw(bill);

pair s = (1e-3,1e-3), db, dt = (1,1), e = s+1e2*dt;
path traj = s--e;
path path = s;
real [] c;

for(int i:sequence(9)) {

  c = intersect(bill, traj);
  e = point(traj, c[1]);
  db = dir(bill, c[0]);
  path = path--e;  

  dt = -dt + 2*dot(dt,db)*db;

  s = e;
  e = s + 1e2*dt;

  for(pair a:intersectionpoints(s+1e-2*dt--e, path)){dot(pic,a,blue);}
  traj = (s+dt)--e;
}
draw(path,red);
add(pic);


矩形內部格点数$(p-1)(q-1)$除以2

来自第8页

3150

Threads

8388

Posts

610K

Credits

$\style{scale:11;fill:#eff}꩜$

Credits
65413
QQ

Show all posts

 Author| hbghlyj Post time 2024-3-16 22:38

billiard table 从一般的点开始45°发球,轨迹自交点数

在 $p:q$ ($p,q\inZ_+$) 的矩形台球桌上,方向 45 度,从一般的点开始发球,轨迹有多少个自交点?
mathcurve.com說,有$p(q-1)+q(p-1)$个自交点。如何證明

例如7:5有7×4+5×6=58个交点:
import graph;
picture pic;
size(100);

path bill = box((0,0),(7,5));

draw(bill);

pair s = (.7,1e-3), db, dt = (1,1), e = s+1e1*dt;
path traj = s--e;
path path = s;
real [] c;

for(int i:sequence(23)) {

  c = intersect(bill, traj);
  e = point(traj, c[1]);
  db = dir(bill, c[0]);
  path = path--e;  

  dt = -dt + 2*dot(dt,db)*db;

  s = e;
  e = s + 1e1*dt;

  for(pair a:intersectionpoints(s+1e-1*dt--e, path)){dot(pic,a,blue);}
  traj = (s+1e-3*dt)--e;
}
draw(path--cycle,red);
add(pic);

3150

Threads

8388

Posts

610K

Credits

$\style{scale:11;fill:#eff}꩜$

Credits
65413
QQ

Show all posts

 Author| hbghlyj Post time 2024-3-16 22:57

手机版|悠闲数学娱乐论坛(第3版)

2025-3-6 02:49 GMT+8

Powered by Discuz!

× Quick Reply To Top Return to the list