<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Lightbending_ptrace_%28xfig_example%29</id>
	<title>Lightbending ptrace (xfig example) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Lightbending_ptrace_%28xfig_example%29"/>
	<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Lightbending_ptrace_(xfig_example)&amp;action=history"/>
	<updated>2026-05-18T14:04:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.7</generator>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Lightbending_ptrace_(xfig_example)&amp;diff=1426&amp;oldid=prev</id>
		<title>Niu: Created page with &quot;=== Relativistic photon trajectory === center  &lt;pre&gt; require(&quot;/home/falkner/Public/lightbending.git/lbscripts&quot;);  define lb_plot_ptracesketch( R, b...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Lightbending_ptrace_(xfig_example)&amp;diff=1426&amp;oldid=prev"/>
		<updated>2018-05-02T11:43:00Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;=== Relativistic photon trajectory === &lt;a href=&quot;/wiki/index.php/File:Ptrace3.png&quot; title=&quot;File:Ptrace3.png&quot;&gt;800px|center&lt;/a&gt;  &amp;lt;pre&amp;gt; require(&amp;quot;/home/falkner/Public/lightbending.git/lbscripts&amp;quot;);  define lb_plot_ptracesketch( R, b...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|800px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require(&amp;quot;/home/falkner/Public/lightbending.git/lbscripts&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
define lb_plot_ptracesketch( R, b ){&lt;br /&gt;
&lt;br /&gt;
  variable size = qualifier(&amp;quot;size&amp;quot;,16);&lt;br /&gt;
  variable rmax = qualifier(&amp;quot;rmax&amp;quot;,10.);&lt;br /&gt;
  variable index = qualifier(&amp;quot;index&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
  if( index !=&amp;quot;&amp;quot; )&lt;br /&gt;
    index = string( &amp;quot;\\ensuremath{_&amp;quot;+index+&amp;quot;}&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
  variable dx = qualifier(&amp;quot;dx&amp;quot;,1.);&lt;br /&gt;
  &lt;br /&gt;
  variable a1 = lb_a_ub( 1./R, b );&lt;br /&gt;
  variable a2 = PI-a1;&lt;br /&gt;
  variable p1 = lb_psi_ua_belob( 1./R, a1 );&lt;br /&gt;
  variable p2 = lb_psi_ua_belob( 1./R, a2 ; b=b );&lt;br /&gt;
  variable p = lb_p_b( b );&lt;br /&gt;
  variable psip = lb_psi_ua_belob( 1./p, PI/2. ; b=b );&lt;br /&gt;
&lt;br /&gt;
  variable pon = 0;&lt;br /&gt;
  if( qualifier_exists(&amp;quot;periastron&amp;quot;) )&lt;br /&gt;
    pon = 1;&lt;br /&gt;
  variable pmax = p1;&lt;br /&gt;
  if(pon)&lt;br /&gt;
    pmax = p2;&lt;br /&gt;
  &lt;br /&gt;
  variable trace = lb_ptrace_belob( b; pmax=pmax, rmax=rmax);&lt;br /&gt;
&lt;br /&gt;
  variable xmax = abs(max(trace.r)*cos(min(trace.p)));&lt;br /&gt;
  variable ymax = abs(max(trace.r)*sin(min(trace.p)));&lt;br /&gt;
  variable tmp,dr;&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  variable xf;&lt;br /&gt;
  if( qualifier_exists(&amp;quot;addto&amp;quot;) )&lt;br /&gt;
    xf=qualifier(&amp;quot;addto&amp;quot;);&lt;br /&gt;
  else{&lt;br /&gt;
    xf = xfig_plot_new(size,size);&lt;br /&gt;
    xf.world(-1.2*xmax,1.2*xmax,-1.2*xmax,1.2*xmax;xpad,ypad);&lt;br /&gt;
    xf.axis(;off);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  %Circle at R&lt;br /&gt;
  tmp = [0:2*PI:#100];&lt;br /&gt;
  xf.plot( R*cos(tmp), R*sin(tmp) ; line=2 );&lt;br /&gt;
  tmp = 2.5/R*7./4.*PI;&lt;br /&gt;
  xf.plot( [0,R*cos(tmp)], [0,R*sin(tmp)] ; line=2 );&lt;br /&gt;
  xf.xylabel(.5*R*cos(0.93*tmp), .5*R*sin(0.93*tmp) , &amp;quot;$R$&amp;quot;+index );&lt;br /&gt;
  &lt;br /&gt;
  %trace&lt;br /&gt;
  xf.plot( trace.r*cos(trace.p), trace.r*sin(trace.p) ; width=4, color=&amp;quot;red&amp;quot;, depth=20);&lt;br /&gt;
  xf.xylabel(dx*xmax,b,&amp;quot;photon&amp;quot;+index,.5,-.5);&lt;br /&gt;
  &lt;br /&gt;
  % impact parameter&lt;br /&gt;
  xf.plot( dx*[0.8*xmax, 0.8*xmax],[0,b] );&lt;br /&gt;
  xf.xylabel( dx*0.8*xmax, b/2., &amp;quot;$b$&amp;quot;+index, .5,0);&lt;br /&gt;
&lt;br /&gt;
  ifnot( qualifier_exists(&amp;quot;addto&amp;quot;) ){&lt;br /&gt;
    % observer sky&lt;br /&gt;
    xf.plot( [1.1*xmax,1.1*xmax],[-1.2*ymax,1.2*ymax] ; line=3 );&lt;br /&gt;
    xf.xylabel( 1.12*xmax, 0, &amp;quot;{\\tiny observer sky at infinity}&amp;quot;,-.5,0 ; rotate=90 );&lt;br /&gt;
    &lt;br /&gt;
    % line of sight&lt;br /&gt;
    xf.plot( [0,xmax],[0,0] );&lt;br /&gt;
    xf.xylabel( .5*(xmax+R),-.05*R,&amp;quot;\\tiny line of sight&amp;quot;,.0,.5);&lt;br /&gt;
  }&lt;br /&gt;
  ifnot( qualifier_exists(&amp;quot;nopsi&amp;quot;) ){&lt;br /&gt;
    % Psi R&lt;br /&gt;
    xf.plot( [0,1.5*R*cos(p1)],[0,1.5*R*sin(p1)] ; depth=19 );&lt;br /&gt;
    tmp = [0:p1:#100];&lt;br /&gt;
    dr = .45;&lt;br /&gt;
    xf.plot( dr*R*cos(tmp),dr*R*sin(tmp) );&lt;br /&gt;
    dr += .2;&lt;br /&gt;
    xf.xylabel( dr*R*cos(p1/2.), dr*R*sin(p1/2.), &amp;quot;$\\Psi_{R&amp;quot;+index+&amp;quot;}$&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  % alpha&lt;br /&gt;
  if( qualifier_exists(&amp;quot;alpha&amp;quot;) ){&lt;br /&gt;
    tmp = [p1-a1:p1:#100];&lt;br /&gt;
    dr=.4;&lt;br /&gt;
    xf.plot( R*cos(p1)+dr*R*cos(tmp), R*sin(p1)+dr*R*sin(tmp) ;depth=19);&lt;br /&gt;
    xf.xylabel( R*cos(p1)+.7*dr*R*cos(p1-a1/2.), R*sin(p1)+.7*dr*R*sin(p1-a1/2.),&lt;br /&gt;
		&amp;quot;$\\alpha$&amp;quot;+index );&lt;br /&gt;
    dr = 1.;&lt;br /&gt;
    xf.plot( R*cos(p1)+[0,dr*R*cos(p1-a1)],R*sin(p1)+[0,dr*R*sin(p1-a1)] ; line=1,depth=19);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(pon){&lt;br /&gt;
    ifnot( qualifier_exists(&amp;quot;nopsi&amp;quot;) ){&lt;br /&gt;
      % Psi R prime&lt;br /&gt;
      xf.plot( [0,1.5*R*cos(p2)],[0,1.5*R*sin(p2)] ; depth=19);&lt;br /&gt;
      tmp = [0:p2:#100];&lt;br /&gt;
      dr = .15;&lt;br /&gt;
      xf.plot( dr*R*cos(tmp),dr*R*sin(tmp) );&lt;br /&gt;
      dr += .3;&lt;br /&gt;
      xf.xylabel( dr*R*cos(.5*(psip+p2)), dr*R*sin(.5*(psip+p2)), &amp;quot;$\\Psi^*_{R&amp;quot;+index+&amp;quot;}$&amp;quot;);&lt;br /&gt;
      &lt;br /&gt;
      % periastron&lt;br /&gt;
      xf.plot( [0,p*cos(psip)],[0,p*sin(psip)] );&lt;br /&gt;
      tmp = [0:psip:#100];&lt;br /&gt;
      dr = .3;&lt;br /&gt;
      xf.plot( dr*R*cos(tmp), dr*R*sin(tmp) );&lt;br /&gt;
      dr += .2;&lt;br /&gt;
      xf.xylabel( dr*R*cos(.5*(psip+p1)), dr*R*sin(.5*(psip+p1)), &amp;quot;$\\Psi_{p&amp;quot;+index+&amp;quot;}$&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    if( qualifier_exists(&amp;quot;alpha&amp;quot;) ){&lt;br /&gt;
      % alpha prime&lt;br /&gt;
      tmp = [p2-a2:p2:#100];&lt;br /&gt;
      dr = .4;&lt;br /&gt;
      xf.xylabel( R*cos(p2)+.6*dr*R*cos(p2-a2/2.), R*sin(p2)+.6*dr*R*sin(p2-a2/2.),&lt;br /&gt;
		  &amp;quot;$\\alpha^*$&amp;quot;+index );&lt;br /&gt;
      xf.plot( R*cos(p2)+dr*R*cos(tmp), R*sin(p2)+dr*R*sin(tmp) ;depth=19);&lt;br /&gt;
      dr = 1.5;&lt;br /&gt;
      xf.plot( R*cos(p2)+[0,dr*R*cos(p2-a2)],R*sin(p2)+[0,dr*R*sin(p2-a2)] ; line=1,depth=19);&lt;br /&gt;
&lt;br /&gt;
      if(qualifier_exists(&amp;quot;symm&amp;quot;)){&lt;br /&gt;
	% alpha prime at alpha&lt;br /&gt;
	tmp = [p1:p1+a2:#100];&lt;br /&gt;
	dr = .4;&lt;br /&gt;
	xf.xylabel( R*cos(p1)+.6*dr*R*cos(p1+a2/2.), R*sin(p1)+.6*dr*R*sin(p1+a2/2.),&lt;br /&gt;
			  &amp;quot;$\\alpha^*$&amp;quot;+index );&lt;br /&gt;
	xf.plot( R*cos(p1)+dr*R*cos(tmp), R*sin(p1)+dr*R*sin(tmp);depth=19 );&lt;br /&gt;
	dr = 1.;&lt;br /&gt;
	xf.plot( R*cos(p1)+[0,dr*R*cos(p1+a2)],R*sin(p1)+[0,dr*R*sin(p1+a2)] ; line=1,depth=19);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return xf;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
variable R = 2.5;&lt;br /&gt;
variable b = 2.9;&lt;br /&gt;
&lt;br /&gt;
variable xf;&lt;br /&gt;
xf = lb_plot_ptracesketch( R, b );&lt;br /&gt;
xf.render(&amp;quot;ptrace1.pdf&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
xf = lb_plot_ptracesketch( R, b ; periastron );&lt;br /&gt;
xf.render(&amp;quot;ptrace2.pdf&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
xf = lb_plot_ptracesketch( R, b ; alpha,periastron,symm );&lt;br /&gt;
xf.render(&amp;quot;ptrace3.pdf&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
variable R2 = 1.5*R;&lt;br /&gt;
variable b2 = 1.3*b;&lt;br /&gt;
variable p1 = lb_psi_ua_belob( 1./R,   lb_a_ub( 1./R, b )  );&lt;br /&gt;
variable p2 = lb_psi_ua_belob( 1./R2, lb_a_ub( 1./R2, b2 ) );&lt;br /&gt;
variable p3 = lb_psi_ua_belob( 1./R2, PI-lb_a_ub( 1./R2, b2 ));&lt;br /&gt;
xf = lb_plot_ptracesketch( R2, b2 ; nopsi,index=&amp;quot;2&amp;quot;,periastron,dx=0.9);&lt;br /&gt;
xf = lb_plot_ptracesketch( R, b ; nopsi, addto=@xf, index=&amp;quot;1&amp;quot; );&lt;br /&gt;
xf.plot( R,0; sym=1, size=1,fill );&lt;br /&gt;
xf.plot( R*cos(p1),R*sin(p1); sym=1, size=1,fill,fillcolor=&amp;quot;red&amp;quot;,depth=18 );&lt;br /&gt;
xf.plot( R2,0; sym=0, size=4,fill );&lt;br /&gt;
xf.plot( R2*cos(p2),R2*sin(p2); sym=0, size=4,fill,fillcolor=&amp;quot;red&amp;quot;,depth=18 );&lt;br /&gt;
xf.plot( R2*cos(p3),R2*sin(p3); sym=0, size=4,fill,fillcolor=&amp;quot;white&amp;quot;,depth=18 );&lt;br /&gt;
xf.render(&amp;quot;ptrace4.pdf&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
exit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;/div&gt;</summary>
		<author><name>Niu</name></author>
	</entry>
</feed>