Trong các cuộc đua trong đó các tay đua đi vòng quanh ít nhất một khúc cua, các vị trí xuất phát của mỗi tay đua được đặt so le, để mỗi tay đua di chuyển cùng một khoảng cách quanh đường đua (nếu không, tay đua trong làn đường trong cùng sẽ có lợi thế rất lớn ).
Với độ dài của trục chính và trục phụ (hoặc bán chính và bán phụ, nếu bạn thích) của đường elip và số làn đường trong đường đua, hãy tạo ra khoảng cách từ điểm bắt đầu của làn trong cùng mà mỗi làn nên loạng choạng.
Thông số kỹ thuật
- Mỗi làn là một hình elip với các trục bán chính dài hơn 5 đơn vị so với làn ngắn nhất tiếp theo. Để đơn giản, giả sử rằng các làn đường có 0 chiều rộng.
- Làn đường trong cùng luôn bắt đầu từ 0 và mọi điểm bắt đầu khác là một số nguyên dương lớn hơn hoặc bằng điểm bắt đầu trước đó.
- Đầu vào và đầu ra có thể ở bất kỳ định dạng thuận tiện và hợp lý.
- Các đầu vào sẽ luôn luôn là số nguyên.
- Bạn phải tính chu vi của bản nhạc trong vòng 0,01 đơn vị giá trị thực.
- Các đầu ra phải được làm tròn xuống số nguyên gần nhất (thả nổi).
- Dòng kết thúc là điểm khởi đầu cho tay đua trong cùng. Chỉ có một vòng đua trong cuộc đua.
- Độ dài của các trục được đo bằng cách sử dụng làn trong cùng của đường đua.
- Xuất ra 0 cho phần bù của làn trong cùng là tùy chọn.
Các trường hợp thử nghiệm
Định dạng: a, b, n -> <list of offsets, excluding innermost lane>
20, 10, 5 -> 30, 61, 92, 124
5, 5, 2 -> 31
15, 40, 7 -> 29, 60, 91, 121, 152, 183
35, 40, 4 -> 31, 62, 94
Các trường hợp thử nghiệm này được tạo bằng tập lệnh Python 3 sau, sử dụng xấp xỉ chu vi của một hình elip do Ramanujan nghĩ ra:
#!/usr/bin/env python3
import math
a = 35 # semi-major axis
b = 40 # semi-minor axis
n = 4 # number of lanes
w = 5 # spacing between lanes (constant)
h = lambda a,b:(a-b)**2/(a+b)**2
lane_lengths = [math.pi*(a+b+w*i*2)*(1+3*h(a+w*i,b+w*i)/(10+math.sqrt(4-3*h(a+w*i,b+w*i)))) for i in range(n)]
print("{}, {}, {} -> {}".format(a, b, n, ', '.join([str(int(x-lane_lengths[0])) for x in lane_lengths[1:]])))
Phép tính gần đúng được sử dụng là:
Cuối cùng, đây là một sơ đồ hữu ích để hiểu các tính toán của phần bù:
h**5
, điều này phù hợp 0.01
với một loạt các giá trị.