- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在努力阐明这个问题,所以我会尽我最大的努力,随着我的理解的提高来清理它。
假设我们有一个正方形,该正方形通过线分成多个垂直段。在我们的正方形内,我们还有一个完美契合的圆圈。
在每个垂直段内,我放置了一个直接位于圆周上的项目。
是否有一种算法可以定义每个段的宽度,以便每个段内的项目在位于圆周上时彼此之间的距离也相等?
这是我惊人的场景草图:
最佳答案
我希望你有这样的想法。
这是使用下面描述的数学生成上面图像的 Python。
#!/usr/bin/env python3
import math
import sys
def layout(n):
assert isinstance(n, int)
assert n >= 1
divisions = [0.0] * (n + 1)
divisions[0] = -1.0
divisions[n] = 1.0
for i in range(1, (n + 1) // 2):
box = -math.cos(i / (n + 1) * math.pi)
divisions[i] = 2.0 * box - divisions[i - 1]
divisions[n - i] = -divisions[i]
return divisions
def quality(divisions):
n = len(divisions) - 1
boxes = [0.5 * (divisions[i] + divisions[i + 1]) for i in range(n)]
angles = [math.asin(box) for box in boxes]
differences = [angles[i] - angles[i + 1] for i in range(n - 1)]
return max(differences) - min(differences)
def eps(divisions):
n = len(divisions) - 1
print('%!PS-Adobe-3.0 EPSF-3.0')
print('%%BoundingBox: 0 0 216 216')
print('0.008 setlinewidth')
print('108 108 translate')
print('90 90 scale')
print('newpath 1 1 moveto -1 1 lineto -1 -1 lineto 1 -1 lineto closepath stroke')
print('newpath 0 0 1 0 360 arc closepath stroke')
for i in range(n):
x = 0.5 * (divisions[i] + divisions[i + 1])
print('newpath {} {} moveto 0.05 0.05 rmoveto -0.1 0 rlineto 0 -0.1 rlineto 0.1 0 rlineto 0 0.1 closepath fill'.format(x, math.sqrt(1 - x ** 2)))
print('[0.016 0.016] 0 setdash')
for i in range(1, n):
print('newpath {} 1 moveto 0 -2 rlineto stroke'.format(divisions[i]))
if __name__ == '__main__':
eps(layout(11))
for m in range(2, 12):
print(quality(layout(m)), file=sys.stderr)
像这样假设标准数学坐标。
+y
^
|
(-1,1) | (1,1)
+-+
-x <-----|O|-----> +x
+-+
(-1,-1) | (1,-1)
|
v
-y
由于盒子在圆上应该有等距的中心,因此这些中心应该有固定间隔的角度。角度θ
(以弧度为单位)的点是(cos θ, sin θ)
。圆的顶部是 θ = π/2
,因此您示例中的角度可能是(从左到右)11π/12、3π/4、7π/12、5π/12 , π/4, π/12
(区间为-π/6
)。
设这些点的 x 坐标为 b(1) ≤ b(2) ≤ ... ≤ b(n)
(b
为框)。我们想要找到分隔符位置 d(1) ≤ d(2) ≤ ... ≤ d(n-1)
使得每个框都以两个相邻分隔符的中点为中心,即,
d(0) + d(1)
b(1) = -----------
2
d(1) + d(2)
b(2) = -----------
2
...
d(n-1) + d(n)
b(n) = ------------- ,
2
其中 d(0) = -1
和 d(n) = 1
是盒子的边缘。
这是一个 n
方程组,n-1
变量。对于b(i)
的一般值,该系统不会有解。幸运的是,可以展示可以实现的 b(i)
的特定选择。
b(i) = -cos((i/(n+1)) pi)
关于algorithm - 计算正方形内的列宽以控制圆周上的项目距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549592/
函数参数中或显示尺寸时(高度,宽度)的顺序是否有约定? 最佳答案 我不知道大量的语言,但我使用过的语言(宽度,高度)。它更适合沿着 (x, y) 坐标线。 关于language-agnostic -
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
有没有办法显示自定义宽度/高度的YouTube视频? 最佳答案 在YouTube网站上的this link中: You can resize the player by editing the obj
如何从此表单获取数据(数据的长表示): import pandas as pd df = pd.DataFrame({ 'c0': ['A','A','B'], 'c1': ['b',
我在让宽度为 900px 的页面在宽度低于 900px 的分辨率下看起来不错时遇到了一些麻烦。这包括智能手机等移动设备。看起来我在页面上放大了,但无法滚动或缩小。我的页面包装器被定义为以屏幕为中心。这
我有一个包含一个表的 div,它有另一个带有动态变化文本的 div。div 有样式 overflow: hidden; white-space: nowrap; text-overflow: elli
我一直在愚弄下面的html代码。我已将 div id ="mainWide"设置为 2500 像素的宽度,这比我的屏幕还宽,我希望在主浏览器窗口中有一个水平滚动条,而不是在 div block 本身中
当我的屏幕浏览器窗口在 992px-1199px 之间时,我的文章元素比它们的父 div (.wrapper) 更宽。所以在这个屏幕宽度下,面板重叠并且看起来不对。 在所有其他屏幕宽度下,我的代码都准
我在对齐某些行时遇到了一些问题。我正在显示一个占据视口(viewport) 100% 高度的部分。因此,当您在屏幕上查看此部分时,您只会看到此部分。 在这个部分中,我有一个标题和副标题。标题应显示在节
为什么表单输入字段比其父 div 宽?宽度应用于文本 div,但不应用于其中包含表单字段的 div。为什么会这样? See the livecode here. .parent { width:
我想让这个标题 100% 宽。我在 jsfiddle 上试过这个,但是左边和右边还有一些余量。 CSS: #header { background: url("../img/top-bg.png
我的页面宽度有问题。无论我尝试什么,它的左边或右边都有白边(默认情况下在右边,如果我使用 margin-right:0 则在左边)。如果我使用 margin:0 比它留在右边。尝试了我所知道的一切,但
我有一个带有背景图片的宽 div。 div 的宽度为 1100 像素,当浏览器窗口小于该宽度时,会出现滚动条。有什么办法可以避免滚动条吗?那不是任何黑客。现在我知道我可以把它放在 body image
我有一个您可以访问的应用程序 here .当您打开应用程序时,只需单击加号按钮,您就会看到一个带有搜索栏的模态窗口。 现在请执行这两个搜索: 搜索 1:AAA 搜索 2:AAE 您会看到,在 AAE
这个问题在这里已经有了答案: Does element width include padding? (5 个答案) 关闭 7 年前。 HTML CSS .wrap{widt
我正在尝试在工具栏中创建一个自定义显示,类似于 Xcode 工具栏中心的信息 Pane 。 我们如何创建一个宽度超过 32 点的 NSToolbarItem? 框架始终将其限制为 32 点,即使最小和
我想将df1转换成df2 旧示例数据框 df1 df1 长),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359
我正在使用 JavaScript 代码在 FireBase/FireStore 中上传图像。 核心功能已经可以运行,我可以上传,但我还需要在上传之前检查图像的大小。这就是我很乐意获得帮助的地方。 以下
如何在 Tkinter 中设置/更改 ttk.Separator 对象的长度/宽度? ttk.Separator(self, orient='horizontal').grid(c
我有一个简单的问题。为什么 a 不会自动调整其内容的大小?像这样: Test 返回 width:100%,尽管我希望“Test”这个词简单地居中。有什么想法吗? 最佳答案 您的问题与 HT
我是一名优秀的程序员,十分优秀!