- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Pygame 中为图形计算器编写了一个类,它本质上只是绘制了一个函数。我一直在为它开发 UI,但发现它不适用于倒数三角函数 cosec 或 cot (1/(math.sin(x))
和 1/(math.tan(x))
分别在 python 中)虽然它确实适用于 sec (1/(math.cos(x))
).
我一直在使用 lambda
关键字将这些函数输入到类中。例如:c = Curve(lambda x: x**2, (255, 0, 0))
我仍在努力改进它,它目前还没有完成,而且它肯定还不是用户证明。但是,无论我尝试什么,我都无法弄清楚为什么我无法让 cosec 或 cot 使用它。
如有任何帮助,我们将不胜感激。
class Curve(object):
def __init__(self, func, colour, width=1):
self.function = func
self.colour = colour
self.width = width
def render(self, colour=None, width=None):
if self.function is None:
return
if colour is not None:
self.colour = colour
if width is not None:
self.width = width
try:
self.function(0)
except (NameError, TypeError, AttributeError, ZeroDivisionError):
return
for x in range(0, WIDTH):
try:
fx = self.function((x / camera_pos[2]) + camera_pos[0])
fx1 = self.function(((x + 1) / camera_pos[2]) + camera_pos[0])
except (OverflowError, ValueError, ZeroDivisionError):
continue
if type(fx) == complex or type(fx1) == complex:
continue
if 0 < transform_point(-fx, "y") < HEIGHT or 0 < transform_point(-fx1, "y") < HEIGHT:
pygame.draw.line(SCREEN, self.colour, (x, transform_point(-fx, "y")),
(x + 1, transform_point(-fx1, "y")), self.width)
transform_point()
函数将笛卡尔坐标映射到屏幕上的位置。
camera_pos = [-400, -300, 1] # [x, y, zoom]
def transform_point(value, axis):
if str(axis).lower() == "x":
return (value - camera_pos[0]) * camera_pos[2]
elif str(axis).lower() == "y":
return (value - camera_pos[1]) * camera_pos[2]
编辑:
我现在发现,如果您在函数中向 x 添加任何值,即使该值非常小,该类也能正常工作,例如:cosec(x+0.0000000000001)
对于图像质量,我很抱歉。
最佳答案
我现在已经能够解决这个问题,因为它是我如何使用子句检查输入函数的有效性的结果:
try:
self.function(0)
except (NameError, TypeError, AttributeError, ZeroDivisionError):
return
在这里,我通过尝试计算 f(0) 来确保该函数是可执行的,以便在渲染曲线时不会发生错误。但是由于 cosec(x) 和 cot(x) f(0) 是未定义的,所以类没有尝试渲染曲线。这解释了为什么向 x 中添加一些量,可以绘制它。
为了解决这个问题,我将代码更改为这样,它单独处理零除法错误。
try:
self.function(0)
except (NameError, TypeError, AttributeError):
return
except ZeroDivisionError:
pass
关于python - 为什么我的素描课画的是 sec,而不是 cosec 或 cot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55082359/
我想以 headless 模式(屏幕上根本没有 GUI)将 JPanel 绘制到 BufferedImage 中。 final JPanel panel = createPanel(); panel.
我是 Canvas 的新手,正在尝试创建看起来逼真的 float 粒子动画。 目前,我正在创建 400 个随机散布在 400x400 Canvas 上的粒子。 然后,在每个 requestAnimat
有没有办法在悬停时停止悬 float 画? :hover 这是一个显示动画的链接: https://codepen.io/youbiteme/pen/RprPrN 最佳答案 只需为您的 svg 悬停添
我想在谷歌地图上绘制覆盖图,其中除了特定点周围 1.5 公里半径以外的所有内容都被遮蔽了。为此,我尝试使用带有大量边框的圆圈,所以我会在边框中放置透明中心和覆盖颜色来实现这一点,但它无法渲染。
我正在尝试通过扩展类 UIView 来创建自定义 View ,该类可以在自定义 View 的中心显示一个圆圈。为了添加自定义绘图,我重写了 draw(_ rect: CGRect) 方法,如下所示。
我是一名优秀的程序员,十分优秀!