アプリ版:「スタンプのみでお礼する」機能のリリースについて

public void Keyframe(){
double T,R,XXX,YYY,XA,YA;
double RTBX,RTBY,LTBX,LTBY;
double K1,K2,KK1,KK2;
double RBX,RBY,RTX,RTY;
double LBX,LBY,LTX,LTY;
double DX1,DX2,DY1,DY2;

int i,j;
int KAK=0;
double TENX=0;
R=3.1415926/180.0;

for(i=1;i<=2+N;i++){
T = (i-1.0)/(N+1.0);
for(j=0;j<=MM;j++){
if(i==1){
XX[i][j]=X[1][j];
YY[i][j]=Y[1][j];
}else if(i==2+N){
XX[i][j]=X[2][j];
YY[i][j]=Y[2][j];
}else if(j==1){
XX[i][j]=(1-T)*X[1][1]+T*X[2][1];
YY[i][j]=(1-T)*Y[1][1]+T*Y[2][1];
XA=XX[i][j]*Math.cos(KAK*T*R)+YY[i][j]*Math.sin(KAK*T*R);
YA=XX[i][j]*Math.sin(KAK*T*R)+YY[i][j]*Math.cos(KAK*T*R);
XX[i][j]=XA+TENX*T;
YY[i][j]=YA+TENX*T;
}else if(j==MM){
XX[i][j]=(1-T)*X[1][MM]+T*X[2][MM];
YY[i][j]=(1-T)*Y[1][MM]+T*Y[2][MM];
XA=XX[i][j]*Math.cos(KAK*T*R)+YY[i][j]*Math.sin(KAK*T*R);
YA=XX[i][j]*Math.sin(KAK*T*R)+YY[i][j]*Math.cos(KAK*T*R);
XX[i][j]=XA+TENX*T;
YY[i][j]=YA+TENX*T;
}
}
}

for(i=1;i<=2+N;i++){
T = (i-1.0)/(N+1.0);
for(j=2;j<=MM;j++){
if((i>1)&&(i<2+N)){
if((j==1)&&(j==MM)){
System.out.println("エラーが発生しました。");
}else{
DX1=X[1][j-1]*(1-T)+X[2][j-1]*T;
DY1=Y[1][j-1]*(1-T)+Y[2][j-1]*T;
DX2=X[1][j+1]*(1-T)+X[2][j+1]*T;
DY2=Y[1][j+1]*(1-T)+Y[2][j+1]*T;
LTX=DX1-X[1][j-1]+X[1][j];
LTY=DY1-Y[1][j-1]+Y[1][j];
LBX=DX2-X[1][j+1]+X[1][j];
LBY=DY2-Y[1][j+1]+Y[1][j];
RTX=DX1-X[2][j-1]+X[2][j];
RTY=DY1-Y[2][j-1]+Y[2][j];
RBX=DX2-X[2][j+1]+X[2][j];
RBY=DY2-Y[2][j+1]+Y[2][j];
KK1=Math.sqrt(Math.pow((X[1][j+1]-X[1][j-1]),2)+Math.pow((Y[1][j+1]-Y[1][j-1]),2));
KK2=Math.sqrt(Math.pow((X[2][j+1]-X[1][j-1]),2)+Math.pow((Y[2][j+1]-Y[2][j-1]),2));
K1=Math.sqrt(Math.pow((X[1][j]-X[1][j-1]),2)+Math.pow((Y[1][j]-Y[1][j-1]),2))/KK1;
K2=Math.sqrt(Math.pow((X[2][j]-X[2][j-1]),2)+Math.pow((Y[2][j]-Y[2][j-1]),2))/KK2;
LTBX=LTX*(1-K1)+LBX*K1;
LTBY=LTY*(1-K1)+LBY*K1;
RTBX=RTX*(1-K2)+RBX*K2;
RTBY=RTY*(1-K2)+RBY*K2;
XXX=LTBX*(1-T)+RTBX*T;
YYY=LTBY*(1-T)+RTBY*T;
XA=XXX*Math.cos(R*T)+YYY*Math.sin(R*T);
YA=XXX*Math.sin(R*T)+YYY*Math.cos(R*T);
XX[i][j]=XA+TENX*T;
YY[i][j]=YA+TENX*T;
}
}
}
}
}


上のコードの解説をしてもらいたいです。

A 回答 (2件)

単に回答者を試す質問?



意味不明の変数名を使った何のヒントもないソースを
人に解析させるなど、非常識極まるでしょう。

何の目的で解析する必要が有るのか、どんな経緯で
このソースを入手したのか くらいは最低限必要ですよ。
    • good
    • 1

Webからコピーしたものでしょうか?


ところどころに実体参照が混っていて、Javaとしては不正なプログラムとなりコンパイルできません。
https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97 …


行が多いだけで、ほとんどは四則演算だけの簡単なものです。

どうやら、 配列の添字 0 を使わずに1から使う、というテクニックを使っているようです。

内容までは追いかける気になれないので解説できません。フーリエ変換かなぁという気はします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!