ロジャー・ゼラズニイ『Creatures of Light and Darkness』(1969)の続き

と前々回書いたが、

https://onedrive.live.com/view.aspx?resid=194F68E4ADDEE47C!117&app=WordPdf

↑をちょっと実験して直接貼り付けてみるかと、色々あちこち見てみたが、

はてなは使えないようです(´・ω・`)

「虎」

    • ウィリアム・ブレイクの詩で、もっとも人気があるものを

     一つだけあげるとするならば、
     『無垢と経験の歌 / Songs of Innocence and of Experience』に含まれる
     「虎 / The Tyger」であろう。
     挿絵画家や銅版画家で生計を立ててたらしいから、詩と絵を銅版で刷り、
     出版した。
     幻想的な詩と絵が一体となった作風で、幻視者の異名もある。

    • 虎は英語ではTigerであるが、ウィリアム・ブレイクのものは、

     Tyger
     と書かれていた。
     18世紀という時代で、スペリングの流行もあったのかもしれないが、
     fearful symmetry
     という言葉と呼応するごとく、「恐ろしげな均衡美」がTygerに感じられし、
     ただの虎ではないという含意もあるのかもしれない。
     文献をあたれば、美術館などに所収されている
     微妙に色合いが異なる詩集が見られる。

    • さて、様々な訳出がされてるけれども、片手間に考えてみた。

     まだまだ、満足できるものではないし、
     変化する可能性は大きいけれども、とりあえず載せておこう。

    • というか、早速修正してるし(´・ω・`)

[]The Tyger[]
[]William Blake[]

[]「虎」 []
[]ウィリアム・ブレイク []

[]Tyger! Tyger! burning bright []
[]In the forests of the night, []
[]What immortal hand or eye []
[]Could frame thy fearful symmetry? []

[]虎よ! 虎よ! 赫(かがや)き燃ゆ []
[]ぬばたまの森は冥(くら)き夜 []
[]いかなる不滅の御手(みて)や御目(おめ)が []
[]汝の畏(おそ)るべき均衡美を形創(かたちづく)りえたのか? []

[]In what distant deeps or skies []
[]Burnt the fire of thine eyes? []
[]On what wings dare he aspire? []
[]What the hand dare seize the fire? []

[]いかなる深き海底や天空の遠くに []
[]汝の眼(まなこ)は燃えていたのか? 焔(ほむら)のごとくに []
[]いかなる翼持て、神は天翔(あまが)けなさったのか? []
[]いかなる御手で、焔を御描(おえが)きなさったのか? []

[]And what shoulder, & what art. []
[]Could twist the sinews of thy heart? []
[]And when thy heart began to beat, []
[]What dread hand? & what dread feet? []

[]そして、いかなる肩で、いかなる御業(みわざ)だろう []
[]汝の心臓の筋肉をねじりえたのだろう? []
[]そして、汝の心臓が脈を打ちはじめたのだ []
[]いかなる畏ろしき御手と、御御足(おみあし)を御使いなさったのだ?[]

[]What the hammer? what the chain? []
[]In what furnace was thy brain? []
[]What the anvil? what dread grasp []
[]Dare its deadly terrors clasp? []

[]いかなる金槌で、いかなる鎖であったのか? []
[]汝の脳髄はいかなる炉にあったのか? []
[]いかなる金床(かなどこ)で? いかなる畏ろしき御考えでしょう []
[]そんな致死なる脅威をまとめなさったのでしょう? []

[]When the stars threw down their spears, []
[]And watered heaven with their tears, []
[]Did he smile his work to see? []
[]Did he who made the Lamb make thee? []

[]星ぼしが槍のように投げ落ちても []
[]そして、天国が涙で濡れても []
[]神は御身(おんみ)の作品であろう汝を、微笑んで見ておられたのか?[]
[]子羊を創られた神は、汝をも創りたもうたのか? []

[]Tyger! Tyger! burning bright []
[]In the forests of the night, []
[]What immortal hand or eye []
[]Dare frame thy fearful symmetry? []

[]虎よ! 虎よ! 赫き燃ゆ []
[]ぬばたまの森は冥き夜 []
[]いかなる不滅の御手や御目が []
[]汝の畏るべき均衡美を形創りなされたのか? []

ロジャー・ゼラズニイ『Creatures of Light and Darkness』(1969)

    • ゼラズニイ(Roger Zelazny)の未訳シリーズである真世界(アンバー)(マーリンを主人公にした)の後半(6-9巻分)を読んでたりするのだが(前半の1-5巻は某早川書房から訳出されているが、もちろん絶版である。なんだかな……)、ちょっと洋書コーナーを見てたら、浮気心が働いて、これまた未訳の本書を購入した。

Creatures of Light and Darkness

    • 表紙絵(ジャッカルのごときアヌビス神)からも推察できるように、エジプト神話とSFを融合させた作品である。ゼラズニイお得意の、アレである。ギリシア神話インド神話北欧神話ネイティヴ・アメリカン神話(ナボハ族)などさまざまな神話をモチーフに融合させる手腕はSF界随一と言っていい。ゼラズニイ=神話SFも過言ではない。
    • さて、まだ前者アンバークロニクル(ただいま9巻目)を読み中なので、本格的に読み進めるつもりはないのだが、眺めてみると、俄然エジプト神話に興味がわいた。さらに、詩や戯曲などを使った凝った構成(´・ω・`)! ピラミッドは興味はあったが、エジプトの歴史全体やヒエログリフ(絵みたいな文字ね)はそれほどでもなかった。
    • ヒエログリフをちょっと調べてみると、その表記法が深い。さすがエジプト。数学も進んでいただけあって、論理的である。シャンポリオンによりロゼッタ・ストーン解明などはドキドキする展開である。エジプト考古学者あるいは言語学者のごとく、それを研究しはじめてしまった。
    • 読もうかと届いた本を開くと、盟友サミュエル・R・ディレイニーへのエピグラフに続き、三つの引用文がある。
    • しゅごい( ・`ω・´)、ゼラズニイ恐るべし。あと1週間もすれば、何回目かのゼラズニイの命日6月14日が訪れる。没年は1995年であるから、ちょうど21年目……でも、作品はまさに永遠に残ってますよ(-人-)
    • ウィリアム・ブレイクの詩(『無垢と経験の歌 / Songs of Innocence and of Experience』[1794])の異本に収録された「 A Divine Image」からの引用部分(8行詩の後半4行)を拙訳ながら記録しておこう。To Roger with heartfelt condolences(ロジャーへ、哀悼の意を込めて)


A Divine Image
William Blake

The Human Dress is forged Iron,
The Human Form a fiery Forge,
The Human Face a Furnace seal'd,
The Human Heart its hungry Gorge.


ある神性の写し身
ウィリアム・ブレイク

人のいでたちは鍛えられしくろがねより
人の形は、苛烈なる火床から
人の顔は、窯うちに封じれられた
人の心は、神のひもじき胃の腑なのだ

(詩の後半部の四行連である)

ヒルベルト曲線について

    • ご無沙汰しております(´・ω・`) なんとなく、前世紀の大数学者ダフィット・ヒルベルトさんの考えた空間充填曲線であるhilbert曲線を三次元においてBlenderというフリーのレンダリングソフトで表現したいなぁという思いから、大学時代のTurboPascal以来というほどに、プログラム言語をいじってその座標点を求めるスプリクトをC言語ベースで書いた。
    • もちろん、自分用なので細かいエラー判定などは省略している。
    • コンパイル環境はVisual Windows for BorlandC++である。C言語はきちんと勉強してないので適当な部分も多いかもしれないので気にしないでください(´・ω・`)

#include
#include
#include
#include

// 三次元空間におけるHilbert曲線の頂点座標{x,y,z}を計算するアルゴリズムである
// Hilbert曲線とは空間充填曲線といわれるフラクタル図形の一種で、位数nのHilbert曲線をH(n)とすると、
// H(n+1)は適当に回転か平行移動した8つ(2の3乗個)のH(n)を最小単位辺(この場合は1)の線分7本でつなげた図形である
// H(n)の極限を考えると、空間が一筆書きで埋めることができる

/* 構造体宣言 */
//Hilbert曲線の頂点座標{x,y,z}の定義
//一般に、H(n)は2^n個の{0,1,2,3,……,(2^n)-1}の組で8^n=(2^3)^n=2^(3n)=(2^n)^3個の頂点がある(※ ^は累乗)
struct point{
int x,y,z;
};

/* プロトタイプ宣言 */
int power(int m, int n);
//mのn累乗(m,n>=0)

void f(int n, struct point *p, struct point *q, int m);

//Hilbert曲線の位数を一段階上げる写像f(n)の定義
// f(1) f(2) f(3)
// H(1) → H(2) → H(3) → H(4) → …
//     f(n-1) f(n) f(n+1)
//  … → H(n-1) → H(n) → H(n+1) → H(n+2) → …
// fi(n)(p)=q(i=1,2,…,8 n=1,2,3…) m:要素組数


/* メイン */
int main(void)
{
  struct point p[8] ={{0,0,0},{0,0,1},{1,0,1},{1,0,0},{1,1,0},{1,1,1},{0,1,1},{0,1,0}};
  //スタートするグレイコード(x,y,z)を表す位数1のHilbert曲線H(1)
//グレイコードは隣り合う座標の差が1であるような数の組。Hilbert曲線の頂点座標はそれらで構成されている

int ORDER; //Hilbert曲線H(n)の位数(1以上。上限は7ぐらいがよいが現在は6まで)
int WRAPPED; //表示する頂点座標の折り返し数
int i,j,k,l,m,n,idx;
struct point *q,*r,*s,*t,*u;

/* 出力ファイルの設定 */
FILE *file;
file = fopen("Hilbert test.txt", "w");


/* hilbert曲線の位数と表示折り返しの入力 */
printf("三次元hilbert曲線の頂点座標をHilbert test.txt(CSVファイル)に出力します");
printf("\n");
printf("求めるhilbert曲線の位数を入力してください(1以上6以下の整数)>");
scanf("%d" , &ORDER);
printf("\n");
printf("何点ごとに座標を折り返し表示するか入力してください(8以上16ぐらいの4の倍数推奨)>");
scanf("%d" , &WRAPPED);
printf("\n");

/* メモリの確保 */
q = (struct point*)malloc(sizeof(struct point)*(8*8));
r = (struct point*)malloc(sizeof(struct point)*(8*8*8));
s = (struct point*)malloc(sizeof(struct point)*(8*8*8*8));
t = (struct point*)malloc(sizeof(struct point)*(8*8*8*8*8));
u = (struct point*)malloc(sizeof(struct point)*(8*8*8*8*8*8));

/* 座標の表示とCSVファイル出力 */
if (ORDER == 1) // ORDER = 1なら H(1)は2^1個の{0,1}の組で8(=8^1=2^3)点
{ for (i = 0; i < 8; i++){
idx = i;
printf( " %04d:(%2d,%2d,%2d)", idx+1 , p[idx].x, p[idx].y, p[idx].z);
if( 0 == (idx +1) % WRAPPED) printf("\n");
fprintf(file,"%d,%d,%d\n", p[idx].x, p[idx].y, p[idx].z);
}
}
else if (ORDER == 2) // ORDER = 2なら H(2)は2^2個の{0,1,2,3}の組で64(=8^2=(2^3)^2=2^6=4^3)点
{ f(1, p, q, 8);
for (j = 0 ; j < 8; j++){
for (i = 0 ; i < 8; i++){
idx = j*8+i;
printf(" %04d:(%2d,%2d,%2d)", (idx +1) , q[idx].x, q[idx].y, q[idx].z);
if( 0 == (idx +1) % WRAPPED) printf("\n");
fprintf(file,"%d,%d,%d\n", q[idx].x, q[idx].y, q[idx].z);
}
}
}
else if (ORDER == 3) // ORDER = 3なら H(3)は2^3個の{0,1,2,……,7}の組で512(=8^3=(2^3)^3=2^9=8^3)点
{ f(1, p, q, 8);
f(2, q, r, 8*8);
for (k = 0 ; k < 8; k++){
for (j = 0 ; j < 8; j++){
for (i = 0 ; i < 8; i++){
idx = k*64+j*8+i;
printf(" %04d:(%2d,%2d,%2d)", (idx +1) , r[idx].x, r[idx].y, r[idx].z);
if( 0 == (idx +1) % WRAPPED) printf("\n");
fprintf(file,"%d,%d,%d\n", r[idx].x, r[idx].y, r[idx].z);
}
}
}
}
else if (ORDER == 4) // ORDER = 4なら H(4)は2^4個の{0,1,2,3,……,15}の組で4096(=8^4=(2^3)^4=2^12=16^3)点
{ f(1, p, q, 8);
f(2, q, r, 8*8);
f(3, r, s, 8*8*8);free(q);
for (l = 0 ; l < 8; l++){
for (k = 0 ; k < 8; k++){
for (j = 0 ; j < 8; j++){
for (i = 0 ; i < 8; i++){
idx = l*512+k*64+j*8+i;
printf(" %06d:(%2d,%2d,%2d)", (idx +1) , s[idx].x, s[idx].y, s[idx].z);
if( 0 == (idx +1) % WRAPPED) printf("\n");
fprintf(file,"%d,%d,%d\n", s[idx].x, s[idx].y, s[idx].z);
}
}
}
}
}
else if (ORDER == 5) // ORDER = 5なら H(5)は2^5個の{0,1,2,3,……,31}の組で3万2768(=8^5=(2^3)^5=2^15=32^3)点
{ f(1, p, q, 8);
f(2, q, r, 8*8);
f(3, r, s, 8*8*8);free(q);
f(4, s, t, 8*8*8*8);free(r);
for (m = 0 ; m< 8; m++){
for (l = 0 ; l < 8; l++){
for (k = 0 ; k < 8; k++){
for (j = 0 ; j < 8; j++){
for (i = 0 ; i < 8; i++){
idx = m*4096+l*512+k*64+j*8+i;
printf(" %06d:(%2d,%2d,%2d)", (idx +1) , t[idx].x, t[idx].y, t[idx].z);
if( 0 == (idx +1) % WRAPPED) printf("\n");
fprintf(file,"%d,%d,%d\n", t[idx].x, t[idx].y, t[idx].z);
}
}
}
}
}
}
else if (ORDER == 6) // ORDER = 6なら H(6)は2^6個の{0,1,2,3,……,63}の組で26万2144(=8^6=(2^3)^6=2^18=64^3)点
{ f(1, p, q, 8);
f(2, q, r, 8*8);
f(3, r, s, 8*8*8);free(q);
f(4, s, t, 8*8*8*8);free(r);
f(5, t, u, 8*8*8*8*8);free(s);
for (n = 0 ; n< 8; n++){
for (m = 0 ; m< 8; m++){
for (l = 0 ; l < 8; l++){
for (k = 0 ; k < 8; k++){
for (j = 0 ; j < 8; j++){
for (i = 0 ; i < 8; i++){
idx = n*32768+m*4096+l*512+k*64+j*8+i;
printf(" %06d:(%2d,%2d,%2d)", (idx +1) , u[idx].x, u[idx].y, u[idx].z);
if( 0 == (idx +1) % WRAPPED) printf("\n");
fprintf(file,"%d,%d,%d\n", u[idx].x, u[idx].y, u[idx].z);
}
}
}
}
}
}
}
free(q);
free(r);
free(s);
free(t);
free(u);


/* 座標の数の表示 */
printf("\n");
printf("位数%dのhilbert曲線の頂点座標:%d個\n", ORDER, power(8,ORDER));
printf("\n");
printf("終了するにはなにかキーを押してください");
getch();
fclose(file);
return 0;
}


/* mのn累乗(m,n>=0) */
int power(int m, int n)

{
return ( (n == 0) ? 1: m*power(m,n-1) );
}

/* Hilbert曲線の位数を一段階上げる写像f(n) */
void f(int n, struct point *p, struct point *q, int m)
{
int i;
struct point *p_w;//作業用の座標

   /* メモリの確保 */
p_w = (struct point*)malloc(sizeof(struct point)*(m*8));

for (i = 0 ; i < m ; i++){
if (n == 1)//f1,8-yzx f2,3,6,7-zyx f4,5-xzy:H(1)→H(2)
{ p_w[i].y = p[i].y;
p_w[i].z = p[i].z;
p_w[i].x = p[i].x;}
else if (n == 2)//f1,8-zxy f2,3,6,7-xzy f4,5-yxz:H(2)→H(3)
{ p_w[i].y = p[i].z;
p_w[i].z = p[i].x;
p_w[i].x = p[i].y;}
else if (n == 3)//f1,8-zyx f2,3,6,7-yzx f4,5-xyz:H(3)→H(4)
{ p_w[i].y = p[i].z;
p_w[i].z = p[i].y;
p_w[i].x = p[i].x;}
else if (n == 4)//f1,8-zyx f2,3,6,7-yzx f4,5-xyz:H(4)→H(5)
{ p_w[i].y = p[i].z;
p_w[i].z = p[i].y;
p_w[i].x = p[i].x;}
else if (n == 5)//f1,8-zxy f2,3,6,7-xyz f4,5-yxz:H(5)→H(6)
{ p_w[i].y = p[i].z;
p_w[i].z = p[i].x;
p_w[i].x = p[i].y;}

    //f1(n)
    q[i].x = p_w[i].y;
q[i].y = p_w[i].z;
q[i].z = p_w[i].x;
//f2(n)
q[i+m].x = p_w[i].z + power(2,n);
q[i+m].y = p_w[i].y;
q[i+m].z = p_w[i].x;
//f3(n)
q[i+2*m].x = p_w[i].z + power(2,n);
q[i+2*m].y = p_w[i].y + power(2,n);
q[i+2*m].z = p_w[i].x;
//f4(n)
q[i+3*m].x = -p_w[i].x + power(2,n) -1;
q[i+3*m].y = -p_w[i].z + power(2,n+1) -1;
q[i+3*m].z = p_w[i].y;
//f5(n)
q[i+4*m].x = -p_w[i].x + power(2,n) -1;
q[i+4*m].y = -p_w[i].z + power(2,n+1) -1;
q[i+4*m].z = p_w[i].y + power(2,n);
//f6(n)
q[i+5*m].x = p_w[i].z + power(2,n);
q[i+5*m].y = -p_w[i].y + power(2,n+1) -1;
q[i+5*m].z = -p_w[i].x + power(2,n+1) -1;
//f7(n)
q[i+6*m].x = p_w[i].z + power(2,n);
q[i+6*m].y = -p_w[i].y + power(2,n) -1;
q[i+6*m].z = -p_w[i].x + power(2,n+1) -1;
//f8(n)
q[i+7*m].x = -p_w[i].y + power(2,n) -1;
q[i+7*m].y = p_w[i].z;
q[i+7*m].z = -p_w[i].x + power(2,n+1) -1;
}
free(p_w);

}

これが話題になっている。ジュリー〜


『サブウェイ123 激突/ THE TAKING OF PELHAM 1 2 3』(2009)

    • 名作『サブウェイ・パニック』(1974)のリメイク作を観た。ニューヨークの地下鉄が四人組の男にハイジャックされ、乗客を人質にして高額な身代金を要求する。その対応や交渉に当たるのが鉄道公安局に勤める主人公で、犯人グループのリーダーと丁々発止のやり取りをしてゆく。その基本ラインは本作もオリジナル作も変わらぬが、1974年版はウォルター・マッソーロバート・ショウ、2009年版はデンゼル・ワシントンジョン・トラボルタという配役で、それだけでもだいぶ印象が変わる。飄々とした演技のマッソーと鉄面皮のショウの対比はそれだけでワクワクできる。ワシントンは演技派であるけれども、トラボルタは過剰な演技が持ち味ゆえ、後者はどっちも熱くなりすぎるのではないかと、ぼくは懸念した。
    • 古典作品のリメイクを除けば、オリジナル作を凌駕した例はあまり聞かない。『遊星からの物体X』は成功した例だろう。そんなわけで、本作も期待せずに観た。監督はトニー・スコット。『エイリアン』『ブレードランナー』を作ったリドリーの弟さんだけれども、主演俳優陣の配役も考慮すれば、アクション主体の作品になることが予想された。
    • 結果から書くとそれほど悪い作品ではなかった。オリジナルを名作たらしめているともいえる巧妙な伏線と、最後にニヤリとさせるその仕掛け以上のものをこしらえるのは不可能なので、それは割り引かれる。想像通りトラボルタの狂気が強調されすぎて、ジェットコースター・ムービーの類型を出ないが、人物の掘り下げや葛藤もきちんと描かれていたのは評価できる(ただ、『インサイド・マン』とちょっとかぶる人物造形であり、デンゼルおなじみの正義漢というスタンスは相変わらずだ。そこら辺はマッソーのが面白い)。また、現代的な仕掛けとしてネット文化が加味されてたり、ワシントンがちょっと体重を増やしているなど役作りに熱心な人だなと関心する。まぁ、観ても損はない作品であるが、まずはオリジナルを観てもらいたい。オリジナルはデヴィッド・シャイアの音楽がまた素晴らしいし(リメイク版は音楽は以下略であるけど)、さらに吹き替えテレビ音声も楽しめる。

デジャヴ [DVD]

デジャヴ [DVD]