跳转到内容

File:Bi-elliptic transfer.svg

页面内容不支持其他语言。
這個文件來自維基共享資源
维基百科,自由的百科全书

原始文件 (SVG文件,尺寸为768 × 580像素,文件大小:4 KB)


摘要

描述 A bi-elliptic transfer from a low circular starting orbit (dark blue), to a higher circular orbit (red). The spaceship is traveling in a counterclockwise direction during all segments of the orbital transfer as is indicated by the large blue and red arrows. When the spacecraft arrives at point 1 it performs a prograde burn to enter the first portion of the transfer orbit (blue-green segment). It then coasts until apoapsis of this transfer orbit located at point 2 where another prograde burn is performed to raise the point of periapsis until it coincides with the orbital radius of the desired orbit. The spacecraft then turns off its engine again and coasts along the yellow segment until it arrives at point 3. The maneuver is completed by performing a retrograde burn at point 3 to slow the spacecraft down and lower apoapsis until the orbit is circular again.
日期
来源 自己的作品
作者 AndrewBuck
其他版本 bi-elliptic_transfer_r-ratio14.svg
SVG开发
InfoField
 
SVG的源代码为有效代码
 
矢量图使用Python创作。
源代码
InfoField

Python code

Python svgwrite code
#!/usr/bin/python3
# -*- coding: utf8 -*-

try:
    import svgwrite
except ImportError:
    print('requires svgwrite library: https://pypi.org/project/svgwrite/')
    # documentation at https://svgwrite.readthedocs.io/
    exit(1)

from math import *

# document
size = 768, 580
name = 'bi-elliptic_transfer'
doc = svgwrite.Drawing(name + '.svg', profile='full', size=size)
doc.set_desc(name, name + '''.svg
https://commons.wikimedia.org/wiki/File:''' + name + '.svg')

# background
doc.add(doc.rect(id='background', insert=(0, 0), size=size, fill='white', stroke='none'))

r1 = 109.6
r2 = 146.4
rb = 537.3

g = doc.add(doc.g(transform='translate(559.22, 290)', fill='none'))

sun = g.add(doc.g(id='sun'))
nbeam = 12
rsun, rsun2 = 8.2, 7.2
rbeam = 13.8
p = []
for i in range(nbeam):
    phi0, phi1 = 2*pi*i/nbeam, 2*pi*(i+0.5)/nbeam
    p += [[rbeam*cos(phi0), rbeam*sin(phi0)], [rsun2*cos(phi1), rsun2*sin(phi1)]]
sun.add(doc.polygon(points=p, stroke='#f89c16', stroke_width=1, fill='#dbf816'))
grad = doc.defs.add(doc.radialGradient(id='grad', center=(0.5, 0.5), r=0.5,
                                       gradientUnits="objectBoundingBox"))
grad.add_stop_color(offset=0, color='#dbf816')
grad.add_stop_color(offset=1, color='#f89c16')
sun.add(doc.circle(center=(0, 0), r=rsun, stroke='#f89c16', stroke_width=1,
    fill='url(#grad)'))

arrow_d = 'M 0.3,0 L -0.8,0.5 Q -0.5,0 -0.8,-0.5 Z'
doc.defs.add(doc.marker(id='arrow1', refX=0, refY=0, viewBox='-1 -1 2 2',
    orient='auto', markerWidth=18, markerHeight=18)).add(doc.path(
        d=arrow_d, stroke='none', fill='#0000c4'))
doc.defs.add(doc.marker(id='arrow2', refX=0, refY=0, viewBox='-1 -1 2 2',
    orient='auto', markerWidth=18, markerHeight=18)).add(doc.path(
        d=arrow_d, stroke='none', fill='#bc0d0d'))
doc.defs.add(doc.marker(id='arrow3', refX=0, refY=0, viewBox='-1 -1 2 2',
    orient='auto', markerWidth=8, markerHeight=8)).add(doc.path(
        d=arrow_d, stroke='none', fill='#197810'))
doc.defs.add(doc.marker(id='arrow4', refX=0, refY=0, viewBox='-1 -1 2 2',
    orient='auto', markerWidth=8, markerHeight=8)).add(doc.path(
        d=arrow_d, stroke='none', fill='#a42d0c'))

g.add(doc.path(d='M {0},0 A {1},{1} 0 0 0 {1},0 A {1},{1} 0 0 0 {0},0'.format(-r1, r1),
      stroke='#0000c4', stroke_width=2.5, marker_end='url(#arrow1)'))
g.add(doc.path(d='M {0},0 A {1},{1} 0 0 0 {1},0 A {1},{1} 0 0 0 {0},0'.format(-r2, r2),
      stroke='#bc0d0d', stroke_width=2.5, marker_end='url(#arrow2)'))

a1 = (r1 + rb) / 2
b1 = sqrt(a1**2 - (a1 - r1)**2)
a2 = (r2 + rb) / 2
b2 = sqrt(a2**2 - (a2 - r2)**2)

g.add(doc.path(d='M {},0 A {},{} 0 0 0 {},0'.format(-rb, a1, b1, r1),
      stroke='#00b996', stroke_width=2, stroke_dasharray='2,4'))
g.add(doc.path(d='M {},0 A {},{} 0 0 0 {},0'.format(r2, a2, b2, -rb),
      stroke='#ff991b', stroke_width=2, stroke_dasharray='2,4'))
g.add(doc.path(d='M {},0 A {},{} 0 0 0 {},0'.format(r1, a1, b1, -rb),
      stroke='#00b996', stroke_width=5))
g.add(doc.path(d='M {},0 A {},{} 0 0 0 {},0'.format(-rb, a2, b2, r2),
      stroke='#ff991b', stroke_width=5))

dv1 = sqrt(2/r1 - 1/a1) - sqrt(1/r1)
dv2 = sqrt(2/rb - 1/a2) - sqrt(2/rb - 1/a1)
dv3 = sqrt(2/r2 - 1/a2) - sqrt(1/r2)
l1 = 160

g.add(doc.line(start=(r1, 0), end=(r1, -l1),
      stroke='#197810', stroke_width=3, marker_end='url(#arrow3)'))
g.add(doc.line(start=(-rb, 0), end=(-rb, l1*dv2/dv1),
      stroke='#197810', stroke_width=3, marker_end='url(#arrow3)'))
g.add(doc.line(start=(r2, 0), end=(r2, l1*dv3/dv1),
      stroke='#a42d0c', stroke_width=3, marker_end='url(#arrow4)'))

# text
g.add(doc.text('1', font_size='48px', stroke='none', fill='black',
      text_anchor='middle', transform='translate(84, 18)',
      font_family='Bitstream Vera Sans'))
g.add(doc.text('2', font_size='48px', stroke='none', fill='black',
      text_anchor='middle', transform='translate(-508, 18)',
      font_family='Bitstream Vera Sans'))
g.add(doc.text('3', font_size='48px', stroke='none', fill='black',
      text_anchor='middle', transform='translate(181, 18)',
      font_family='Bitstream Vera Sans'))

doc.save(pretty=True)

许可协议

我,本作品著作权人,特此采用以下许可协议发表本作品:
GNU head 已授权您依据自由软件基金会发行的无固定段落及封面封底文字(Invariant Sections, Front-Cover Texts, and Back-Cover Texts)的GNU自由文件许可协议1.2版或任意后续版本的条款,复制、传播和/或修改本文件。该协议的副本请见“GNU Free Documentation License”。
w:zh:知识共享
署名 相同方式共享
本文件采用知识共享署名-相同方式共享4.0 国际3.0 未本地化版本2.5 通用2.0 通用1.0 通用许可协议授权。
您可以自由地:
  • 共享 – 复制、发行并传播本作品
  • 修改 – 改编作品
惟须遵守下列条件:
  • 署名 – 您必须对作品进行署名,提供授权条款的链接,并说明是否对原始内容进行了更改。您可以用任何合理的方式来署名,但不得以任何方式表明许可人认可您或您的使用。
  • 相同方式共享 – 如果您再混合、转换或者基于本作品进行创作,您必须以与原先许可协议相同或相兼容的许可协议分发您贡献的作品。
您可以选择您需要的许可协议。

说明

添加一行文字以描述该文件所表现的内容

此文件中描述的项目

描繪內容

image/svg+xml

72dce82939298aef41f506b8252b348e65c89d82

4,223 字节

580 像素

768 像素

文件历史

点击某个日期/时间查看对应时刻的文件。

日期/时间缩⁠略⁠图大小用户备注
当前2020年5月29日 (五) 15:462020年5月29日 (五) 15:46版本的缩略图768 × 580(4 KB)Geek3computed the actual aspect ratios of the ellipses and delta-v.
2008年4月7日 (一) 16:322008年4月7日 (一) 16:32版本的缩略图768 × 472(21 KB)AndrewBuckA bi-elliptic transfer from a low circular starting orbit (dark blue), to a higher circular orbit (red). The green arrows indicate forward directed thrust (prograde) and the red arrow indicates reverse directed thrust (retrograde).
2008年4月3日 (四) 06:132008年4月3日 (四) 06:13版本的缩略图768 × 472(13 KB)AndrewBuck{{Information |Description=A bi-elliptic transfer from a low circular starting orbit (dark blue), to a higher circular orbit (red). |Source=self-made |Date=2008-04-02 |Author= AndrewBuck |Permission= |other_versions= }}

以下2个页面使用本文件:

全域文件用途

以下其他wiki使用此文件:

元数据