Editing User:Ali Haydar/GSOC19/project

From BRL-CAD

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
=='''Annotations: Implement more annotation support: labels, notes, and dimensions'''==
+
=='''Annotations: Implement support for 2D  annotations, labels that can be added to geometry'''==
  
The project is divided into three concepts:
+
The project is divided into two parts:
*extending the MGED and Archer commands to inculde the new annotation types:
+
*Creating a new primitive for annotations
*calculating each type templet dimensions if nedded like the fields in the annotation box 
+
*Rendering the primitives to the wireframe view
*drawing the new types in the wire frame view  
 
  
==='''extending the MGED and Archer commands to inculde the new Annotations types'''===
+
==='''Creating a new primitive for annotations'''===
*New types of annotaions :
+
*Annotations comprise of:
**dimention line  
+
**Notes  and Labels : Single line or Multiline text
**multible lables in multible fields box
+
**Leader Lines (includes GD&T)
**label in a box
 
**single or multible line note in a box
 
 
*the extending in mged will be like:
 
<br style="clear: both" />
 
  
<pre>
+
*The primary goal is to implement simple leader lines, so that we have a basic frame for further amendments.
mged> in
+
*Support for view Independent annotations: This is resolved by using a separate coordinate system in two dimensions for the labels. This coordinate system has a direct mapping with the original 3D coordinate system that comprises of the wireframes.
Enter name of solid: annot_1
+
*Coordinate system is nothing but a transformation matrix. This matrix projects all the points in the 3D coordinate system to the 2D coordinate system that will contain the annotations.
Enter solid type: annot
+
*The plan of action comprises of the creation of a new primitive “annotation”. The basic workflow can be related to that of the sketch primitive.
Enter annotation type : dimension_line
+
*The annotation primitive will comprise of various parameters that define the labels.
"sudo "
+
*Here we are aiming for manual annotations. The parameters will be provided by the user through the command line. ”in” followed by various parameters some of which are:
Enter starting point of the dimention line
+
**Position
Enter end point of the dimention line
+
**Text - leader line
Enter dimension ( or the dimention can be calculated (this choice can be taken if the user wants to override the actual dimention )
+
**Additional object reference name
       
 
</pre>
 
  
*all the annotions types should be entered in the same annotaion primative so this will require modifications on the current primative
+
'''Container for annotations'''
*We can consider the same approach of manual annotions as an example in the multible field annotion the usuer will provide the number of fields and the lables or we can consider half manual abrouch a spcific characteer like (@) when encounterd the program considers it the end of the field and the label existed in it and the end of this label vlist( this will help with the calculation of the the field ( cell ) dimentions so the user enters all the lables in the same line.( this can be discused withe the socity)
 
Example : Enter the text label: sudo1@sudo2 this annotation will be constructed from two vlist and calculte the dimentions accordingly.
 
 
 
*The leader lines will be constructed in correspondance with each type.
 
*rendering each primative type in wire frame.
 
==='''calculating each type dimentions if nedded like the fields in the annotation box'''===
 
*in the case of the single line note in a box once the annotation became a vlist the containing box dimentions will be calculated doing simple mathematical operation on the vlist points coordinates
 
wedth=[(max X+const)-(min X+ const)] the same for the hight, since the box will be drawn with respect to the refrance point of the annotation just like the lable.
 
*in the case of multible cells annotation if we considerd the half manual approch each label will be a separat vlist and the cell dimentions can be calcuated as above.
 
 
=='''drawing the new types in the wire frame view '''==
 
*all the new types of annotaions will be converted to a vlist either inside the lable vlist or separate one and can be drawn in the same way as the lable .
 
*For the rendering part, we will try to have annotation on a rendered image.
 
==='''attatch the annotation to apoint from a solid '''===
 
in this case the annotated opjects name hase to be selected and pass the point to be calculated as annotated point like the center of a circl and we have to make some call back function to recalculate the point at each change if the solid moves the annotaion will move with it .
 
==='''Milestones'''===
 
*Fixing the wrong depiction with OpenGl in windows.
 
*Extending the MGED and Archer commands to inculde the new Annotations types.
 
*Calculating the needed dimentions for the new annotaions and implimenting the necessary leader lines.
 
*Drawing the new types in wire frame view.
 
*Documentation Support
 
 
 
===''' fixing the wrong depiction with OpenGl in windows '''===
 
currently the annotation representation is correct in Xwindow display manager where the annotation doesn't undergo rotations or zoon when the primative does but this is not the case in OpenGl this has to be fixed by identifing the cause of this problem which I expect will be because of the display matrix we have to assure that the annotations isn't defined in the primitive coordinate system.
 
===''' Extending the MGED and Archer commands to inculde the new Annotations types. '''===
 
in this case we are going to make a genrial input method for all types of line segments line_seg carc_seg nurb_seg bezier_seg.
 
===''' Calculating the needed dimentions for the new annotaions and implimenting the necessary leader lines. '''===
 
in the case of the box around the lable the calculation must be done after the lable Vlist is constructed and put the box points coordinates in the same Vlist or a separet one
 
===''' Drawing the new types in wire frame view. '''===
 
the represintation of the annotaions in the wire frame will be the same in the current annotation primative just adding the nessesary Vlists and functions nessesary to draw them.
 
===''' Documentation Support '''===
 
we are going to make a wiki pages to demonstrate the use of the modifications we created to make it easy to the user to use the annotaion primatve.
 
=='''Time Table '''==
 
==='''Timeline'''===
 
 
 
IN the bonding period I am trying to understand the code perfectly and make use of some experemnts and sociaty openions The time table of the coding period is not clear because the time needed for each task isn't known exactly
 
 
 
'''Deliverables''' :
 
 
 
Community bonding period
 
 
 
[ May 5 - May 20 ]:Review the pipeline
 
Take inputs from the community
 
Gain insight into the on screen rendering of the primitive
 
 
 
Coding period ( I aim to start coding from May 27 onwards)
 
 
 
 
 
*[May 27 - June 7]:understanding the pipe line and trying to fix the wrong depiction in OpenGl
 
 
 
*[June 7 - June 20]: writing functions to calculate and draw the box around the labels and modifing the mged commands
 
 
 
*[June 20 - June 26]:Tests for the written functions
 
 
 
 
 
*three days for university exams not known exactly because of the nature of the master degree combined with other branches in civil engineering.
 
 
 
*[July 1 - July 20]:Implement support for all the line segments suggested by the socity
 
 
 
*[July 20 - July 24]:Write the tests and solve any issue if arises
 
 
 
*[July 28 - Aug 5]:Support for rendering the annotations
 
 
 
*[Aug 5 - Aug 15]:ray trace simple annotation and adding the fiture to all types
 
 
 
*[Aug 15 - Aug 20]:Write tests and clear any issue if arises
 
 
 
*[Aug 20 - Aug 25]:Documentation support.
 
 
 
==='''Personal Details'''===
 
 
 
*'''Name''' : Ali Haydar
 
 
 
*'''Country''' : Province of Brescia (GMT+2)
 
 
 
*'''Contact Details'''
 
**Email : lgoogl696@gmail.com
 
**University Email : a.haydar@studenti.unibs.it          
 
**IRC Nick : lois_googl
 
 
 
*'''Education'''
 
**Bachelor degree in civil engineering Al-Baath univeristy Syria
 
**Master in civil and environmental engineering Brescia university Italy
 
 
 
*'''Github''':AliHaider93
 

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)