proyecto | contenido |
---|---|
Esta obra pertenece a los cursos de ingeniería de software del Norte | Primavera 2020 Computer Software Engineering Institute (Roger Ren Jianxin) |
Los requisitos de este trabajo, por favor haga clic en el enlace para ver | la ingeniería de software 2020BUAA trabajo proyecto individual |
clases de enseñanza | 005 |
Dirección del proyecto github | https://github.com/syncline0605/IntersectProject |
Mi objetivo en este curso | La capacidad de mejorar su código, el proceso de aprendizaje del desarrollo del trabajo en equipo |
Este trabajo me ayudó a alcanzar los objetivos de los aspectos específicos | campo de prácticas de PSP, estar familiarizado con el proceso desarrollado en C ++ con VS, VS familiarizado con las distintas herramientas |
mesa de PSP
Antes de empezar la aplicación del programa, en el siguiente formulario para registrar tu PSP se estima que se gasta en el desarrollo de los diversos módulos del tiempo del programa
PSP2.1 | Etapas del Proceso de Software Personal | Estimado de consumo de tiempo (minutos) | Los que consumen mucho tiempo reales (minutos) |
---|---|---|---|
Planificación | plan | ||
- Estimación | - ¿Cuánto tiempo se estima que la tarea requiere | ||
Desarrollo | desarrollar | 660 | 930 |
- Análisis | - análisis de necesidades (incluyendo el aprendizaje de nuevas tecnologías) | 180 | 240 |
- Diseño de especificaciones | - Generar documentos de diseño | 30 | 30 |
- Revisión de diseño | - Diseño de la crítica (y sus colegas revisaron los documentos de diseño) | 30 | 0 |
- Estándar de Codificación | - especificación de códigos (para desarrollar una especificación apropiada para el desarrollo actual) | 60 | 0 |
- Diseño | - diseño específico | 60 | 60 |
- Codificación | - codificación específica | 120 | 420 |
- Revisión de código | - Opiniones de Código | 60 | 0 |
- Prueba | - prueba (autocomprobación, modificar el código, enviar modificaciones) | 120 | 180 |
la presentación de informes | informe | 180 | 210 |
- Informe de prueba | - Informe de prueba | 120 | 120 |
- Medición de Tamaño | - esfuerzo computacional | 30 | 30 |
- Postmortem & Process Plan de Mejora | - retrospectiva, y proponer plan de mejora de procesos | 30 | 60 |
total | 840 | ||
fase de pre-diseño de un tiempo más relajado, se puede seguir modificando el diseño, un nuevo método de consulta, y mientras el trabajo de diseño al escribir el blog. Después de la caída de una versión del diseño y eliminado el blog se ha escrito, así que pasé mucho tiempo. En la etapa de codificación, ya que no está familiarizado con el lenguaje C ++, trato con la sintaxis del coste de error C ++ un gran tiempo, a veces un par de horas buscando una por lo demás muy simples errores pequeños, pero hablando en general, debido a que el pre've elaboró la estructura del código, aparte de los errores de sintaxis no es mucho obstáculo. En el análisis, la fase de prueba, el tiempo restante es bastante inadecuada porque no hay tiempo para completar totalmente el proceso de PSP, no pudo hacer el análisis de estilo de código, análisis operativo y las pruebas unitarias.
En términos generales, en este proyecto personal, profundamente entiendo que el "diseño primera codificado" superioridad; pero, por una parte debido al largo tiempo con pre-diseñado, el lenguaje mediados no está familiarizado con los errores de codificación en exceso, lo que resulta en la falta de energía , decepcionante, no completaron el trabajo requerido en las últimas etapas de análisis y pruebas, el programa no elimina completamente la advertencia. En el momento en que el trabajo continuará para completar esta sección cuidadosamente.
Descripción de las ideas de resolución de problemas
análisis de necesidades (incluyendo el aprendizaje de nuevas tecnologías)
1, después de leer la obra proyecto personal, en primer lugar para las reglas de puntuación, planes de estudiar las siguientes nuevas tecnologías:
- Ya que se incluye en el marcador
Commit 信息是否区分标题和详细描述
, referirse al estudio del blog siguiente
2, el programa de entrada es un parámetro de línea de comandos, es necesario diseñar y escribir una función para analizar los argumentos de línea de comandos
- Debido a que el programa debe tener una entrada (-i) y una salida (= O), esto puede ser la base de un procedimiento simplificado
3, para la línea y la intersección de la línea recta, solución de programación lineal para el problema círculo de intersección, el círculo y el círculo de intersección, después de aprender decidido aplicar los métodos siguientes:
La idea general: primero determina si hay una intersección, la intersección si la intersección coordenadas de recálculo, muchos intermedios de datos calculados de este modo no se calcula en varias ocasiones y la función de cálculo para determinar la escritura no por separado,
Punto en una línea recta de proyección
- Línea de \ (P_1 \) puntos \ (P_2 \) unidad de vector es e, dos puntos en una línea recta \ (P_1, P_2 \) , los puntos a ser resuelto \ (P \) , el punto de proyección \ (P_R \)
- Determina el vector \ (<P_1, P> \ ) vector de proyección en la dirección e \ (<P_1, P_R> \) , la unión \ (P_1 \) coordenadas, \ (P_R \) coordenadas buscarán fácilmente fuera
Las líneas rectas y intersección de líneas
Cuando no existen dos idénticos o dos pendiente de la línea cuando la pendiente de la línea, la intersección de dos línea recta sin
Si una línea recta a través de dos puntos \ (P_1, P_2 \) , a continuación, que se expresa como \ (Ax + By + C = 0 \) en la forma de
有\ (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 \)
Si dos líneas de intersección rectas \ (A_0x + B_0y + C_0 = 0 \) y \ (+ B_1y A_1x c_l = 0 + \) , su intersección es \ ((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 es 0 si las dos rectas paralelas)
Linear y la intersección circular
- En primer lugar buscar centro \ (P \) punto en una línea recta proyectada \ (PR \) coordenadas, entonces podemos encontrar la
Vector <p, pr>
longitud de matriz \ (m \) , esta longitud módulo \ (m \) radio \ (R & lt \) Comparar - Si \ (m \) mayor que el radio \ (R & lt \) , hay intersección
- Si \ (m \) igual al radio \ (R & lt \) , hay un punto de intersección, el punto proyectado \ (PR \) es el punto de intersección
- Si \ (m \) menor que el radio \ (R & lt \) , hay dos puntos de intersección, el primero usando el teorema de Pitágoras, de acuerdo con \ (m \) y (& lt \ R) \ media longitud círculo del segmento de línea se determina, y luego sobre la base de este dirección de la longitud del vector de la línea, las coordenadas del punto de proyección y una línea recta para obtener las coordenadas de dos puntos de intersección de
- En primer lugar buscar centro \ (P \) punto en una línea recta proyectada \ (PR \) coordenadas, entonces podemos encontrar la
Ronda y la intersección ronda
- Ver el blog siguiente
Aprendizaje Referencia blog:
- Geometría Computacional | círculo y la intersección de la línea recta | Cross puntos de un círculo y una línea | C / C ++ para lograr
- Geometría computacional | intersecta círculo el círculo con | Cross Puntos de Círculos | C / C ++ para lograr
- El procesamiento de imágenes; C ++ ecuación conocida de la intersección de dos líneas rectas buscar
El diseño y la implementación de procesos
el modo de almacenamiento de datos de diseño
- struct Point (struct Vector)
- Cuando se calcula en un sistema de coordenadas, Vector es un concepto muy importante. A partir de los datos, es el mismo punto con un eje horizontal
double x
, un eje verticaldouble y
se puede expresar, pero también debe ser parada longitud troqueldouble length
- Cuando se calcula en un sistema de coordenadas, Vector es un concepto muy importante. A partir de los datos, es el mismo punto con un eje horizontal
- struct Línea
- struct Círculo
- Por
STL vector
el ahorro de cada estructura de datos entradas- vector <Línea>
- vector <Circle>
- Por
STL set
el ahorro de estructura de datos en cada intersección, el cruce no se repetirá para asegurar que el almacenado- conjunto <Punto>
Función de diseño
- función de línea de comandos de análisis
- manejador de entrada
- Buscando un vector que conecta los dos puntos
- Entrada:
Point A
,Point B
- salida:
Vector M
- Entrada:
- Buscando un punto en una línea proyectada función de coordinar
- Entrada:
Point A
,Line l
- salida:
point M
- Entrada:
- Buscando distancia en línea recta entre la función de punto
- Entrada:
Point A
,Line l
- salida:
int distance
- Entrada:
- función de evaluación en función del número de intersecciones de dos líneas rectas / cruzar el / función de demanda de puntos círculo de línea el número de intersecciones de dos círculos
- Salida: el número de intersecciones
- Intersección coordenada obtenida por referencia a una función como un parámetro
diseño de prueba de la unidad
- No es una unidad completa probar todas las funciones, utilizando principalmente los casos de prueba basados simplemente en alguna unidad pequeña función de prueba
el diseño de casos de prueba
rendimiento de los programas
Usando un conjunto de prueba generada al azar contiene más de un millar de piezas de datos, una carrera minutos (es decir, terminar antes de correr).
Obviamente, el programa utilizará la mayor parte del tiempo en el conjunto de elementos insertados en
Además, con base en el valor exacto determinó la reescritura iguales importancia también ocupan mucho tiempo
Pensé en una forma tan óptima en la fase de diseño, pero al final no tuvo tiempo para darse cuenta
- Siempre que el calculado dos recta \ (L_1, L_2 \) una intersección o lineal (L \) \ círculo \ (C \) después de intersección, la intersección puede ser determinada
- No se ha determinado si el restante (L_1 \) \ la intersección, y \ (L_2 \) en una intersección de la línea recta, si la pueden grabarse no tiene que ser calculado y determinado (porque no puede haber sólo dos líneas rectas una intersección)
- No se ha determinado si el restante (L \) \ en la intersección línea recta, supra
código Descripción
- Encuentra la intersección de dos líneas rectas
- Encuentra la intersección de la línea con el círculo