02/12/31 20:10
JNIEXPORT void JNICALL Java_Point3d_add(JNIEnv* env, jobject me, jobject p){
jclass cls = env->GetObjectClass(me);
jfieldID fid_x = env->GetFieldID(cls, "x", "D");
jfieldID fid_y = env->GetFieldID(cls, "y", "D");
jfieldID fid_z = env->GetFieldID(cls, "z", "D");
jdouble this_x = env->GetDoubleField(me, fid_x);
jdouble this_y = env->GetDoubleField(me, fid_y);
jdouble this_z = env->GetDoubleField(me, fid_z);
jdouble p_x = env->GetDoubleField(p, fid_x);
jdouble p_y = env->GetDoubleField(p, fid_y);
jdouble p_z = env->GetDoubleField(p, fid_z);
env->SetDoubleField(me, fid_x, this_x+p_x);
env->SetDoubleField(me, fid_y, this_y+p_y);
env->SetDoubleField(me, fid_z, this_z+p_z);
}
JNIEXPORT void JNICALL Java_Point3d_exe(JNIEnv* env, jobject me){
jclass cls = env->GetObjectClass(me);
jfieldID fid_x = env->GetFieldID(cls, "x", "D");jfieldID fid_y = env->GetFieldID(cls, "y", "D");jfieldID fid_z = env->GetFieldID(cls, "z", "D");
jdouble x = env->GetDoubleField(me, fid_x);jdouble y = env->GetDoubleField(me, fid_y);jdouble z = env->GetDoubleField(me, fid_z);
for (int i = 0; i < 0xfffffff; i++) {
x += 1.0;
y += 1.0;
z += 1.0;
}
env->SetDoubleField(me, fid_x, (jdouble) x);
env->SetDoubleField(me, fid_y, (jdouble) y);
env->SetDoubleField(me, fid_z, (jdouble) z);
}
this.x += p.x;を実装するたけでも↑のようなコードが必要っぽい.
なんか他にいい方法ないですかね?