プロジェクト | コンテンツ |
---|---|
この作品は、北部のソフトウェア工学コースに所属します | 春2020コンピュータソフトウェア工学研究所(ロジャー・レン・ジアンキン) |
このジョブの要件は、ビューへのリンクをクリックしてください。 | 2020BUAAソフトウェアエンジニアリング個々のプロジェクトの作業 |
クラスを教えます | 005 |
githubのプロジェクトアドレス | https://github.com/syncline0605/IntersectProject |
このコースで私の目的 | 彼らのコードを改善する能力、チームワークの開発の学習過程 |
この仕事は私の目標達成を助け、特定の側面を | PSPの練習コース、VS、様々なツールに精通VSとC ++で開発プロセスに精通しています |
PSPテーブル
私たちは、あなたのPSPはプログラム時間の様々なモジュールの開発に費やされると推定されている記録するために次のような形式で、プログラムを実行開始する前に
PSP2.1 | パーソナルソフトウェアプロセス段階 | 推定時間がかかる(分) | 実際の時間がかかる(分) |
---|---|---|---|
プランニング | 計画 | ||
- 推定 | - どのくらいの時間は、タスクが必要であると推定されています | ||
開発 | 開発 | 660 | 930 |
- 分析 | - (新しい技術を学ぶ含む)の分析を必要とします | 180 | 240 |
- デザインスペック | - 設計ドキュメントの生成 | 30 | 30 |
- デザインレビュー | - デザインレビュー(と同僚が設計文書を見直し) | 30 | 0 |
- コーディング標準 | - コード仕様(現在の開発のために適切な仕様を開発するために) | 60 | 0 |
- 設計 | - 具体的な設計 | 60 | 60 |
- コーディング | - 特定のコーディング | 120 | 420 |
- コードレビュー | - コードレビュー | 60 | 0 |
- テスト | - 検査(セルフテスト、コードを変更し、変更を提出) | 120 | 180 |
報告 | レポート | 180 | 210 |
- 試験報告書 | - テストレポート | 120 | 120 |
- サイズ測定 | - 計算の労力 | 30 | 30 |
- 死後&プロセス改善計画 | - 後知恵、およびプロセス改善計画を提案します | 30 | 60 |
トータル | 840 | ||
よりリラックスした時間の事前設計段階、我々はブログを書きながら、設計、新しいクエリ方法、しばらく設計作業を修正し続けることができます。私は多くの時間を費やしたようなデザインのバージョンと削除されたブログの打倒後は、書き込まれています。コーディング段階では、それはC ++言語に精通していないので、pre'veは、コードの構造を働いたので、C ++のエラーの構文との契約が、それ以外は非常にシンプルで小さなミスを探し、時には数時間を素晴らしい時間を要するが、一般的に言えば、構文エラー以外はあまり支障はありません。分析では、テスト段階では、完全にPSPプロセスを完了する時間がないので、残りの時間は非常に不十分である、コードスタイル分析、業務分析や単体テストを行うことができませんでした。
一般的に、この個人的なプロジェクトでは、話して、私は深く優位性を「デザインが最初にエンコードされた」ことを理解し、しかし一方では、長い時間のスタミナ不足が生じ、あまりにも多くのエラーをコーディングに精通していない事前に設計された、ミッド言語、と、拍子抜け、分析とテストの後の段階で必要な作業を完了しなかった、プログラムは完全に警告がなくなるわけではありません。時間によってジョブが、私は慎重にこのセクションを完了していきます。
問題解決のためのアイデアの説明
(新しい技術を学ぶ含む)ニーズ分析
1、最初のスコアリングルールのすべての、個人的なプロジェクトの作業を読んだ後、次のような新技術を研究する計画:
- スコアが含まれているため
Commit 信息是否区分标题和详细描述
、研究、次のブログを参照してください。
2、入力プログラムは、コマンドラインパラメータは、あなたが設計し、コマンドライン引数を解析する機能を記述する必要があります
- プログラムは、入力(-i)と出力(-o)を有していなければならないので、これは簡略化の手順に基づいていてもよいです
3、ラインと直線の交点、問題の交差点円、円と円の交点までの直線プログラミングソリューションについて、次の方法を適用することを決定した学習後:
一般的な考え方は、第一の交差点があるか否かを判定する、交点座標を再計算場合交差点、多くの中間こうして計算されたデータが繰り返し計算されておらず、計算機能は、別個のない書き込みを決定します
直線投影上の点
- ラインから\(P_1 \)ポイント\(P_2 \)単位ベクトルE、直線上の2点である\(P_1、P_2 \) 、解決すべき点\(P \) 、投影点\(P_r \)
- ベクトル決定\(<P_1、P> \ ) 方向eに射影ベクトル\(<P_1、P_r> \) 、結合\(P_1 \)座標、\(P_r \)座標が容易に努めますアウト
直線とライン交点
二つの同一又は線二勾配は場合ラインの傾き、ない2つの直線の交点が存在しない場合
場合、2つの点を通る直線\(P_1、P_2 \)次にとして発現される、\(AX +により+ C = 0 \) の形で
有\(A = P_1.y - P_2.y、B = P_2.x - P_1.x、C = P_1.x * P_2.y - P_2.x * P_1.y \)
両者は直線と交差する場合\(A_0x + B_0y + C_0 = 0 \) と\(+ B_1y A_1x C_L = 0 + \) 、それらの交点である\((X、Y)\ )
\(X =(B_0 * C_1 - B_1 * C_0)/ D \)
\(Y =(A_1 * C_0 - A_0 * C_1)/ D \)
\(D =(B_1 A_0 * - * B_0 A_1)\)(D 0 2であれば直線と平行)
リニアおよび円形交差点
- 最初の中心を求める\(P \)直線上の点投影\(PR \)座標を、我々は見つけることができ
Vector <p, pr>
、ダイ長さ\(M \) 、このモジュールの長さ\(M \)半径\(R&LTを\)の比較 - もし\(M \)の半径よりも大きい\(R&LT \) 、無交差点
- 場合\(M \)の半径に等しい(R&LT \)\、交点が存在し、投影点\(PR \)は、交点であります
- 場合(M \)\半径よりも小さい\(R&LT \) 、交差点の2点によれば、ピタゴラスの定理を用いて、最初ある\(M \)及び(R&LT \)\これに基づいて、その後そして、判定された線分の半円長線の方向ベクトルの長さ、投影点の座標との交点の2点の座標を取得する直線
- 最初の中心を求める\(P \)直線上の点投影\(PR \)座標を、我々は見つけることができ
ラウンドとラウンド、交差点
- 次のブログを参照してください。
参考学習ブログ:
設計と実装プロセス
デザインデータ保存モード
- 構造体のポイント(構造体ベクター)
- 座標系で計算すると、ベクトルは非常に重要な概念です。データから、横軸と同じ点で
double x
、縦軸にdouble y
表すことができ、それはまた、ダイ長セーブなければなりませんdouble length
- 座標系で計算すると、ベクトルは非常に重要な概念です。データから、横軸と同じ点で
- 構造体のライン
- 構造体のサークル
- することにより
STL vector
、各データ構造のエントリを保存- ベクトル<ライン>
- ベクトル<サークル>
STL set
各交差部にデータ構造を保存し、交差点は、格納されたことを確実にするために省略する- セット<ポイント>
設計機能
- コマンドライン解析機能
- 入力ハンドラ
- 2点を結ぶベクトルを求めます
- 入力:
Point A
、Point B
- 出力:
Vector M
- 入力:
- ライン上の点を求めること機能を投影座標
- 入力:
Point A
、Line l
- 出力:
point M
- 入力:
- ポイント機能との間の直線距離を求めます
- 入力:
Point A
、Line l
- 出力:
int distance
- 入力:
- 二本の直線の交点の数の関数評価関数/ライン円ポイント/需要関数を2円の交点の数を横切ります
- 出力:交差点の数
- パラメータとして関数を参照することによって得られた交点座標
ユニットテストの設計
- 主に、単にテストいくつかの小さな機能単位に基づいてテストケースを使用していない完全なユニットテストのすべての機能、
テストケースの設計
プログラムのパフォーマンス
ランダムに生成されたテストセットを使用して(即ち、実行する前に終了する)以上のデータ千個分の実行を含んでいます。
もちろん、プログラムは上に挿入要素のセットでほとんどの時間を使用します。
また、正確な値に基づいても、多くの時間を取る書き換え等号の意味を決定しました
私は、設計段階でこのような最適な方法を考えましたが、最終的に実現するための時間を持っていませんでした
- 計算された2本の直線たび\(L_1、L_2 \)交差点又は線形(L \)\円\(C \)交差点の後に、交差点を決定することができます
- 残りのかどうか決定されていない(L_1 \)\交差点、および\(L_2 \)の2つだけの直線Aが存在する可能性があるため(記録することができた場合、直線の交点で計算して決定する必要がありません交差点)
- 残りのかどうか決定されていない\(L \)前掲、直線の交点に
コード説明
- 2つの直線の交点を探します
- 円と直線の交点を探します