前提・実現したいこと
現在、点群データを任意の角度で平行移動・回転ができるようなシステムを作っています。
具体的には、直線部の路面の点群データを座北を基準としてY軸が並ぶように変換を行いたいと考えています。(Yの値はすべて等しくなるはず)
申し訳ございませんが、プログラミング自体独学で進めているため、コードの書き方はかなり不自然な点があるかもしれません。半年ほど勉強して、始めてコードを書き始めているのですが、これ以上は厳しいと感じ、友人に勧められたこのサイトで質問させていただきます。
発生している問題・エラーメッセージ
現在、CSVデータをVS Code内に入力し、計算を行うことはできているのですが、出力したデータが上記のように変換されておらず、またXとYの値が間違って出力されてしまいます。出力されたCSVデータを3Dの解析ソフトで確認すると平面(XY)が線のような形になっていました。
該当のソースコード
import pandas as pd import csv import numpy as np pd.read_csv("######") df=pd.read_csv("######",names=("X","Y","Z")) X=df["X"] Y=df["Y"] Z=df["Z"] myarray = np.array myarray2 = np.array myarray = X.values myarray2 = Y.values Xmax = (max(X)) Ymax = (max(Y)) Xmin = (min(X)) Ymin = (min(Y)) w = ((Xmax - Xmin)/2) h = ((Ymax - Ymin)/2) tochuu = (myarray - w) tochuu2 = (myarray2 - h) deg30 = np.deg2rad(30) cos = np.cos(deg30) sin = np.sin(deg30) x_dash = [] y_dash = [] result = (tochuu * cos) - (tochuu2 * sin) result2 = (tochuu * sin) + (tochuu2 * cos) saishuu = (result + w) saishuu2 = (result + h) list1 = [saishuu] list2 = [saishuu2] list3 = [Z] with open('######', 'w') as f: writer = csv.writer(f) for kekka in zip(saishuu,saishuu2,Z): writer.writerow(kekka)
試したこと
入力する点群データの中心を基準として回転をさせようとは試みたのですが、うまくいきませんでした。
回答1件
あなたの回答
tips
プレビュー