2012-01-06 62 views
-1

我想用x,y,z座標來生成3D點的立方體,它們的間隔相等。我用Perl寫了下面的程序,但是當我想象時,它看起來有些缺失。3d點生成

for($x=0;$x<28;$x+=1.4){ 
    for($y=0;$y<28;$y+=1.4){ 
     for($z=0;$z<28;$z+=1.4){ 
      @arr_grid[$g]=$x."  ".$y."  ".$z."\n"; 
      $g++; 
     } 
    } 
} 
$c=scalar @arr_grid; 
for($l=0;$l<$c;$l++){ 
    print "HETATM  O     @arr_grid[$l]\n"; 
} 

或向我推薦處理空間和計算中的3D點的任何書籍或網站。提前致謝。

+1

你的意思是「它看起來有些缺點」?你如何想象它? – Nick 2012-01-06 13:22:13

+0

實際上它與生物分子相關,即生物信息學,通過生物信息工具進行可視化。如果可能的話告訴我在哪裏閱讀這種東西。 – gthm 2012-01-06 13:35:08

+1

那麼代碼看起來很乾淨,當然會創建21 * 21 * 21點。我認爲這個錯誤不在這個代碼中。 – Nick 2012-01-06 13:47:48

回答

0

您可能有興趣看到一些看起來更像Perl程序員如何編寫它的東西。

#!/usr/bin/perl 

use strict; 
use warnings; 
use 5.010; 

my @arr_grid; 

for (my $x = 0; $x < 28; $x += 1.4) { 
    for (my $y = 0; $y < 28; $y += 1.4) { 
    for (my $z = 0; $z < 28; $z += 1.4) { 

     push @arr_grid, "$x  $y  $z\n"; 
    } 
    } 
} 

foreach (@arr_grid) { 
    say "HETATM  O     $_"; 
} 

但是,就像Nick說的那樣,Perl似乎並沒有問題。

+0

感謝您的答覆,但我的主要問題是我有不同的值相同的一組點x,y,z,我計算兩組點之間的距離是多少? – gthm 2012-01-06 14:40:02