おそらく、スプレッドシートとExcelの関数の書式・仕様が異なるのだと思われます。
スプレッドシートについては無知なので説明致せませんが、代わりにExcelでのHSTACK関数を使用しない式を考えました。
- fbtofx
=FLOOR.MATH(LOG(減速下限X速度/(MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))),1-減速時空気抵抗)+1) - fbtofy
=IF(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))>減速下限Y速度,FLOOR.MATH(LOG((減速下限Y速度+減速時重力/減速時空気抵抗)/(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗),1-減速時空気抵抗)+1),0) - fbtof
=MAX(fbtofx,fbtofy) - 直進状態でのx速度一覧
=初速×COS(RADIANS(発射角度))×SEQUENCE(1,直進フレーム数,,0) - 減速状態でのx速度一覧
=IF(SEQUENCE(1,fbtof)<fbtofx,MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^SEQUENCE(1,fbtof),減速下限X速度×(1-減速時空気抵抗)^SEQUENCE(1,fbtof,1-fbtofx)) - 自由落下状態でのx速度一覧
=IF(fbtof<fbtofx,MIN(初速,減速時最大速度)×COS(RADIANS(発射角度))×(1-減速時空気抵抗)^fbtof,減速下限X速度×(1-減速時空気抵抗)^(fbtof-fbtofx))×(1-自由落下時空気抵抗)^SEQUENCE(1,50) - 直進状態でのy速度一覧
=初速×SIN(RADIANS(発射角度))×SEQUENCE(1,直進フレーム数,,0) - 減速状態でのy速度一覧
=IF(SEQUENCE(1,fbtof)<fbtofy,(MIN(初速,減速時最大速度)×SIN(RADIANS(発射角度))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^SEQUENCE(1,fbtof)-減速時重力/減速時空気抵抗,(MIN(減速下限Y速度,初速×SIN(RADIANS(発射角度)))+減速時重力/減速時空気抵抗)×(1-減速時空気抵抗)^SEQUENCE(1,fbtof,1-fbtofy)-減速時重力/減速時空気抵抗) - 自由落下状態でのy速度一覧
=(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行ずつに配置することになるので、座標一覧を求める式が複雑になるかもしれません。
もしこの式も動作しなければ、さらに対策を考えます。
通報 ...