Return to convertjme.pl CVS log | Up to [LON-CAPA] / loncom / homework |
version 1.9, 2003/12/08 18:36:58 | version 1.10, 2005/01/25 14:55:15 |
---|---|
Line 135 if ($png) { | Line 135 if ($png) { |
units => "cm"); | units => "cm"); |
} | } |
my %valence = ("C",4,"N",3,"P",3,"O",2,"S",2); | my %electrons = ("C",4,"N",5,"P",5,"O",6,"S",6); |
my %font_width = (" ",250,"+",564,"-",500,"0",500,"1",500,"2",500,"3",500,"4",500,"5",500,"6",500,"7",500,"8",500,"9",500,"A",722,"B",667,"C",667,"D",722,"E",611,"F",556,"G",722,"H",722,"I",333,"J",389,"K",722,"L",611,"M",889,"N",722,"O",722,"P",556,"Q",722,"R",667,"S",556,"T",611,"U",722,"V",722,"W",944,"X",722,"Y",722,"Z",611,"a",444,"b",500,"c",444,"d",500,"e",444,"f",333,"g",500,"h",500,"i",278,"j",278,"k",500,"l",278,"m",778,"n",500,"o",500,"p",500,"q",500,"r",333,"s",389,"t",278,"u",500,"v",500,"w",722,"x",500,"y",500,"z",444); | my %font_width = (" ",250,"+",564,"-",500,"0",500,"1",500,"2",500,"3",500,"4",500,"5",500,"6",500,"7",500,"8",500,"9",500,"A",722,"B",667,"C",667,"D",722,"E",611,"F",556,"G",722,"H",722,"I",333,"J",389,"K",722,"L",611,"M",889,"N",722,"O",722,"P",556,"Q",722,"R",667,"S",556,"T",611,"U",722,"V",722,"W",944,"X",722,"Y",722,"Z",611,"a",444,"b",500,"c",444,"d",500,"e",444,"f",333,"g",500,"h",500,"i",278,"j",278,"k",500,"l",278,"m",778,"n",500,"o",500,"p",500,"q",500,"r",333,"s",389,"t",278,"u",500,"v",500,"w",722,"x",500,"y",500,"z",444); |
my $font = '/usr/share/fonts/default/Type1/n021003l.pfb'; | my $font = '/usr/share/fonts/default/Type1/n021003l.pfb'; |
my $pointsize = 20; | my $pointsize = 20; |
Line 333 foreach my $struct (@all_structs) { | Line 333 foreach my $struct (@all_structs) { |
if ($formula ne "C" || $sign ne ""|| | if ($formula ne "C" || $sign ne ""|| |
$adjacent[$i] < 2 || ($adjacent[$i] == 2 && $bonds[$i] == 4) || (@aldehyde[$i] == 1 && @bonds[$i] == 3)) { | $adjacent[$i] < 2 || ($adjacent[$i] == 2 && $bonds[$i] == 4) || (@aldehyde[$i] == 1 && @bonds[$i] == 3)) { |
# don't show C, unless charged, terminal, or linear | # don't show C, unless charged, terminal, or linear |
my $nH = 0; | if (exists $electrons{$formula}) { |
if (exists $valence{$formula}) { | # add H atoms to satisfy minimum valence |
$nH = $valence{$formula} - $bonds[$i]; | my $e = $electrons{$formula}; |
$nH += (($charge eq "")? 1 : $charge) if ($sign eq "+"); | $e -= (($charge eq "")? 1 : $charge) if ($sign eq "+"); |
$nH -= (($charge eq "")? 1 : $charge) if ($sign eq "-"); | $e += (($charge eq "")? 1 : $charge) if ($sign eq "-"); |
my $valence = 4 - abs($e-4); | |
my $nH = $valence - @bonds[$i]; | |
$formula .= "H" if ($nH > 0); | |
$formula .= $nH if ($nH > 1); | |
} | } |
$formula .= "H" if ($nH > 0); | |
$formula .= $nH if ($nH > 1); | |
my @formula = $formula=~ /[A-Z][a-z]?\d*/g; | my @formula = $formula=~ /[A-Z][a-z]?\d*/g; |
my $PI = 3.1415; | my $PI = 3.1415; |