こちらのグラフで算出できる座標をExcel等で再現できる式を作れる方はいらっしゃいませんでしょうか? グラフの再現ではなく、とある時間tでの座標を出せるようにしてほしいです。 よろしくお願いします。 ※グラフはつーさんが製作されたものです。
追記 初速部分は作ることができました。画像 ※ボールドマーカーの値を使用しています。
追記:アスタリスクが表示できなかったので、×に置き換えました。申し訳ございません。
Excel上で動作する、フレーム毎のx速度とy速度を求める式を作成しました。 「速度=1フレーム間に進む距離」であるため、1フレーム目からnフレーム目までの速度の合計を発射位置に加算すると、nフレーム目の座標に等しくなります。 文字数制限に引っかかったので、2コメントに分けて掲載します。
=HSTACK(初速×COS(RADIANS(発射角度))×SEQUENCE(1,直進フレーム数,,0),IF(SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)))<FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))),減速下限X速度×(1-減速時空気抵抗)^SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)),1-FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1))),IF(MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))<FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)),減速下限X速度×(1-減速時空気抵抗)^(MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))-FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1)))×(1-自由落下時空気抵抗)^SEQUENCE(1,50))
これらの式は、一つのセルに入力することでフレーム毎の速度一覧を1行にずらっと並べます。 これらの式を入力したセルの右1行に、空白でないセルが一つでもあると動作しません。 また、これらの式はこのままでは動作しないため、「初速」「減速時最大速度」「直進フレーム数」「発射角度」「減速下限X速度」「減速下限Y速度」「減速時空気抵抗」「減速時重力」「自由落下時空気抵抗」「自由落下時重力」をセル参照に書き換える必要があります。 地道に書き換えようとすると尋常ならざる労力が要りますが、「すべて置換」機能を使うことですぐに完了させることができます。 pc版ではCtrl+H、スマホ版では上の虫眼鏡アイコン→左上の歯車アイコン→「検索とすべて置換」を選択してください。上の欄に置き換えたい文字列、下の欄に置き換える文字列を入力することで簡単に書き換えられます。
=HSTACK(初速×SIN(RADIANS(発射角度))×SEQUENCE(1,直進フレーム数,,0),IF(SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)))<IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0),(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)))-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)),1-IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))-減速時重力/減速時空気抵抗),(IF(MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))<IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0),(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^(MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))-IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))-減速時重力/減速時空気抵抗)+自由落下時重力/自由落下時空気抵抗)×(1-自由落下時空気抵抗)^SEQUENCE(1,50)-自由落下時重力/自由落下時空気抵抗)
製作ありがとうございます。 2つ質問させてください。 ①「減速下限X速度」や「自由落下時空気抵抗」はこの部分の値をそのまま使用していいのか。 ②「初速」や「直進フレーム数」は「A1」や「B3」などのセルの場所で置き換えていいのか。
①:「減速下限X速度」は0.2355、「自由落下時空気抵抗」は0.02であっています。 数値そのものを入れるのもアリですが、これらの値は全ブキで共通というわけではないので、別のセルに数値を入れて式にセルの場所を入れた方がメンテナンス性が上がります。 ②:大丈夫です。むしろ、その使い方を想定して作成しております。
自分のExcelはHSTACK関数を使用できないものだったので、スプレッドシートで行いましたが、動作しません… どこが間違っているでしょうか…?
おそらく、スプレッドシートとExcelの関数の書式・仕様が異なるのだと思われます。 スプレッドシートについては無知なので説明致せませんが、代わりにExcelでのHSTACK関数を使用しない式を考えました。
fbtofx、fbtofy、fbtofは速度の算出に必要なパラメータです。この内、fbtofは減速状態を維持するフレーム数に一致します。 文字数が圧倒的に少ないですね。前回の式がいかに無駄な計算を含んでいたかがよく分かります…
この方法ではx速度とy速度をそれぞれ3行ずつに配置することになるので、座標一覧を求める式が複雑になるかもしれません。 もしこの式も動作しなければ、さらに対策を考えます。
本当に申し訳ないです。SEQUENCE関数も使えないバージョン(2019)でした… どうにかなりませんでしょうか…(全て委ねてしまってすいません…)
いえいえ、自分は計算と理論値が大好物なのでとても楽しいです!
SEQUENCE関数の実態は、「1,2,...と続く配列を作成する」ものです。 これが使えないのなら、別の場所に1,2,...を記入することで代替できます。
まず、オートフィルを用いて1,2,...を入力します。 次に、以下の式を入力します。時刻には1,2,...の1が入力されたセル参照を入れます。それ以外のセル参照は絶対参照($A$1といった形式で入力。pc版ならF4でこの形式にできる)にしておきます。
最後に、これらの式をオートフィルすれば完成です!
とても雑ですが、こちらが例になります。
ありがとうございます!正常に動作しました! この件で1つ頼んでもよろしいですか? この画像のように、数値を並べれるようにすることは可能でしょうか? こうすることで、座標が出しやすくなり、直感的にわかりやすくなると思うためです。 ※画像は、ただ数値を直に入力しただけです。
ありがとうございました! 自分は1つの式にしたかったので、直進状態の0の部分(偽の場合の部分)に減速状態の式を突っ込んで、その式の0の部分に自由落下状態の式を突っ込んで…ってしてみました。 これで正常に動作しているので、これでやっていこうと思います。 改めて、対応してくださってありがとうございました!
不適切なコンテンツとして通報するには以下の「送信」ボタンを押して下さい。 現在このグループでは通報を匿名で受け付けていません。 管理者グループにはあなたが誰であるかがわかります。
どのように不適切か説明したい場合、メッセージをご記入下さい。空白のままでも通報は送信されます。
通報履歴 で、あなたの通報と対応時のメッセージを確認できます。
追記:アスタリスクが表示できなかったので、×に置き換えました。申し訳ございません。
Excel上で動作する、フレーム毎のx速度とy速度を求める式を作成しました。
「速度=1フレーム間に進む距離」であるため、1フレーム目からnフレーム目までの速度の合計を発射位置に加算すると、nフレーム目の座標に等しくなります。
文字数制限に引っかかったので、2コメントに分けて掲載します。
=HSTACK(初速×COS(RADIANS(発射角度))×SEQUENCE(1,直進フレーム数,,0),IF(SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)))<FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))),減速下限X速度×(1-減速時空気抵抗)^SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)),1-FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1))),IF(MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))<FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)),減速下限X速度×(1-減速時空気抵抗)^(MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))-FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1)))×(1-自由落下時空気抵抗)^SEQUENCE(1,50))
これらの式は、一つのセルに入力することでフレーム毎の速度一覧を1行にずらっと並べます。
これらの式を入力したセルの右1行に、空白でないセルが一つでもあると動作しません。
また、これらの式はこのままでは動作しないため、「初速」「減速時最大速度」「直進フレーム数」「発射角度」「減速下限X速度」「減速下限Y速度」「減速時空気抵抗」「減速時重力」「自由落下時空気抵抗」「自由落下時重力」をセル参照に書き換える必要があります。
地道に書き換えようとすると尋常ならざる労力が要りますが、「すべて置換」機能を使うことですぐに完了させることができます。
pc版ではCtrl+H、スマホ版では上の虫眼鏡アイコン→左上の歯車アイコン→「検索とすべて置換」を選択してください。上の欄に置き換えたい文字列、下の欄に置き換える文字列を入力することで簡単に書き換えられます。
=HSTACK(初速×SIN(RADIANS(発射角度))×SEQUENCE(1,直進フレーム数,,0),IF(SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)))<IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0),(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)))-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^SEQUENCE(1,MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)),1-IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))-減速時重力/減速時空気抵抗),(IF(MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))<IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0),(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^(MAX(FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1),IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))-IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0))-減速時重力/減速時空気抵抗)+自由落下時重力/自由落下時空気抵抗)×(1-自由落下時空気抵抗)^SEQUENCE(1,50)-自由落下時重力/自由落下時空気抵抗)
製作ありがとうございます。
2つ質問させてください。
①「減速下限X速度」や「自由落下時空気抵抗」はこの部分の値をそのまま使用していいのか。
②「初速」や「直進フレーム数」は「A1」や「B3」などのセルの場所で置き換えていいのか。
①:「減速下限X速度」は0.2355、「自由落下時空気抵抗」は0.02であっています。
数値そのものを入れるのもアリですが、これらの値は全ブキで共通というわけではないので、別のセルに数値を入れて式にセルの場所を入れた方がメンテナンス性が上がります。
②:大丈夫です。むしろ、その使い方を想定して作成しております。
自分のExcelはHSTACK関数を使用できないものだったので、スプレッドシートで行いましたが、動作しません…

どこが間違っているでしょうか…?
おそらく、スプレッドシートとExcelの関数の書式・仕様が異なるのだと思われます。
スプレッドシートについては無知なので説明致せませんが、代わりにExcelでのHSTACK関数を使用しない式を考えました。
=FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1)
=IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0)
=MAX(fbtofx,fbtofy)
=初速×COS(RADIANS(発射角度))×SEQUENCE(1,直進フレーム数,,0)
=IF(SEQUENCE(1,fbtof)<fbtofx,MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^SEQUENCE(1,fbtof),減速下限X速度×(1-減速時空気抵抗)^SEQUENCE(1,fbtof,1-fbtofx))
=IF(fbtof<fbtofx,MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^fbtof,減速下限X速度×(1-減速時空気抵抗)^(fbtof-fbtofx))×(1-自由落下時空気抵抗)^SEQUENCE(1,50)
=初速×SIN(RADIANS(発射角度))×SEQUENCE(1,直進フレーム数,,0)
=IF(SEQUENCE(1,fbtof)<fbtofy,(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^SEQUENCE(1,fbtof)-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^SEQUENCE(1,fbtof,1-fbtofy)-減速時重力/減速時空気抵抗)
=(IF(fbtof<fbtofy,(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^fbtof-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^(fbtof-fbtofy)-減速時重力/減速時空気抵抗)+自由落下時重力/自由落下時空気抵抗)×(1-自由落下時空気抵抗)^SEQUENCE(1,50)-自由落下時重力/自由落下時空気抵抗
fbtofx、fbtofy、fbtofは速度の算出に必要なパラメータです。この内、fbtofは減速状態を維持するフレーム数に一致します。
文字数が圧倒的に少ないですね。前回の式がいかに無駄な計算を含んでいたかがよく分かります…
この方法ではx速度とy速度をそれぞれ3行ずつに配置することになるので、座標一覧を求める式が複雑になるかもしれません。
もしこの式も動作しなければ、さらに対策を考えます。
本当に申し訳ないです。SEQUENCE関数も使えないバージョン(2019)でした…
どうにかなりませんでしょうか…(全て委ねてしまってすいません…)
いえいえ、自分は計算と理論値が大好物なのでとても楽しいです!
SEQUENCE関数の実態は、「1,2,...と続く配列を作成する」ものです。
これが使えないのなら、別の場所に1,2,...を記入することで代替できます。
まず、オートフィルを用いて1,2,...を入力します。
次に、以下の式を入力します。時刻には1,2,...の1が入力されたセル参照を入れます。それ以外のセル参照は絶対参照($A$1といった形式で入力。pc版ならF4でこの形式にできる)にしておきます。
=IF(時刻<=直進フレーム数,初速×COS(RADIANS(発射角度)),0)
=IF(時刻<=fbtof,IF(時刻<fbtofx,MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^時刻,減速下限X速度×(1-減速時空気抵抗)^(時刻-fbtofx)),0)
=IF(fbtof<fbtofx,MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^fbtof,減速下限X速度×(1-減速時空気抵抗)^(fbtof-fbtofx))×(1-自由落下時空気抵抗)^時刻
=IF(時刻<=直進フレーム数,初速×SIN(RADIANS(発射角度)),0)
=IF(時刻<=fbtof,IF(時刻<fbtofy,(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^時刻-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^(時刻-fbtofy)-減速時重力/減速時空気抵抗),0)
=(IF(fbtof<fbtofy,(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^fbtof-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^(fbtof-fbtofy)-減速時重力/減速時空気抵抗)+自由落下時重力/自由落下時空気抵抗)×(1-自由落下時空気抵抗)^時刻-自由落下時重力/自由落下時空気抵抗
最後に、これらの式をオートフィルすれば完成です!
とても雑ですが、こちらが例になります。

ありがとうございます!正常に動作しました!
この件で1つ頼んでもよろしいですか?
この画像のように、数値を並べれるようにすることは可能でしょうか?
こうすることで、座標が出しやすくなり、直感的にわかりやすくなると思うためです。
※画像は、ただ数値を直に入力しただけです。
=IF(AND(時刻>直進フレーム数,時刻-直進フレーム数<=fbtof),IF(時刻-直進フレーム数<fbtofx,MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^(時刻-直進フレーム数),減速下限X速度×(1-減速時空気抵抗)^(時刻-直進フレーム数-fbtofx)),0)
=IF(時刻>直進フレーム数+fbtof,IF(fbtof<fbtofx,MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^fbtof,減速下限X速度×(1-減速時空気抵抗)^(fbtof-fbtofx))×(1-自由落下時空気抵抗)^(時刻-直進フレーム数-fbtof),0)
=IF(AND(時刻>直進フレーム数,時刻-直進フレーム数<=fbtof),IF(時刻-直進フレーム数<fbtofy,(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^(時刻-直進フレーム数)-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^(時刻-直進フレーム数-fbtofy)-減速時重力/減速時空気抵抗),0)
=IF(時刻>直進フレーム数+fbtof,(IF(fbtof<fbtofy,(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^fbtof-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^(fbtof-fbtofy)-減速時重力/減速時空気抵抗)+自由落下時重力/自由落下時空気抵抗)×(1-自由落下時空気抵抗)^(時刻-直進フレーム数-fbtof)-自由落下時重力/自由落下時空気抵抗,0)
ありがとうございました!
自分は1つの式にしたかったので、直進状態の0の部分(偽の場合の部分)に減速状態の式を突っ込んで、その式の0の部分に自由落下状態の式を突っ込んで…ってしてみました。
これで正常に動作しているので、これでやっていこうと思います。
改めて、対応してくださってありがとうございました!