我正在用Python编写一个基本的2D形状库(主要用于操作SVG绘图),我对如何有效地计算两个椭圆的交点感到茫然.
每个椭圆由以下变量(所有浮点数)定义:
c: center point (x, y)
hradius: "horizontal" radius
vradius: "vertical" radius
phi: rotation from coordinate system's x-axis to ellipse's horizontal axis
Run Code Online (Sandbox Code Playgroud)
忽略椭圆相同时,可能有0到4个交点(没有交点,切线,部分重叠,部分重叠和内部切线,并且完全重叠).
我发现了一些潜在的解决方案:
关于如何计算交叉点的任何建议?速度(它可能需要计算很多交叉点)和优雅是主要标准.代码会很棒,但即使是一个好的方向也会有所帮助.
我为正在构建的应用程序创建了一个 Dockerfile,该应用程序具有大量大型 apt-get 包依赖项。它看起来像这样:
FROM ubuntu:15.10
RUN apt-get update && apt-get install -y \
lots-of-big-packages
RUN install_my_code.sh
Run Code Online (Sandbox Code Playgroud)
当我开发应用程序时,我不断地遇到意想不到的包依赖项。然而,由于所有包都在一条 Dockerfile 指令中,即使再添加一条也会破坏缓存,并需要下载并安装整个包,这会花费很长时间。我想知道是否有更好的方法来构建我的 Dockerfile?
一种想法是RUN apt-get update && apt-get install -y为每个包放置一个单独的命令,但多次运行 apt-get update 可能会耗尽所有节省的资金。
最简单的解决方案是在第一个包之后添加第二个RUN apt-get update && apt-get install -y包,作为所有意外包的包罗万象,但这以一种不直观的方式划分包。(即,“当我意识到我需要它时”)我想当依赖关系更稳定时我可以将它们组合起来,但我发现我总是对此过于乐观。
无论如何,如果有人有更好的方法来构建它,我很乐意听到。(我的所有其他想法都违背了 Docker 的可重复性原则)
我正在尝试创建一个绑定到 Unix 域套接字的基本 HTTP 服务器,但是将 BaseHTTPRequestHandler 子类与 UnixStreamServer 一起使用会创建一个异常,表明它们不能一起工作。
玩具服务器.py:
from SocketServer import UnixStreamServer
from BaseHTTPServer import BaseHTTPRequestHandler
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-Type", "text/plain")
self.end_headers()
self.wfile.write("Hi!")
server = UnixStreamServer('./mysocket.sock', MyHandler)
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)
然后我发送一个带有 的请求curl --unix-socket ./mysocket.sock http:/hello,这会导致服务器上出现以下异常(使用 Python 2.7.11):
Exception happened during processing of request from
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 290, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 318, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 331, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", …Run Code Online (Sandbox Code Playgroud) python ×2
docker ×1
dockerfile ×1
ellipse ×1
geometry ×1
intersection ×1
shapes ×1
sockets ×1
unix-socket ×1