{"action":"created","comment":{"url":"https://api.github.com/repos/opensim-org/opensim-core/pulls/comments/29826639","id":29826639,"diff_hunk":"@@ -0,0 +1,627 @@\n+#ifndef _OPENSIM_GEOMETRY_H_\n+#define _OPENSIM_GEOMETRY_H_\n+/* -------------------------------------------------------------------------- *\n+ *                            OpenSim:  Geometry.h                            *\n+ * -------------------------------------------------------------------------- *\n+ * The OpenSim API is a toolkit for musculoskeletal modeling and simulation.  *\n+ * See http://opensim.stanford.edu and the NOTICE file for more information.  *\n+ * OpenSim is developed at Stanford University and supported by the US        *\n+ * National Institutes of Health (U54 GM072970, R24 HD065690) and by DARPA    *\n+ * through the Warrior Web program.                                           *\n+ *                                                                            *\n+ * Copyright (c) 2005-2015 Stanford University and the Authors                *\n+ * Author(s): Ayman Habib                                                     *\n+ *                                                                            *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\"); you may    *\n+ * not use this file except in compliance with the License. You may obtain a  *\n+ * copy of the License at http://www.apache.org/licenses/LICENSE-2.0.         *\n+ *                                                                            *\n+ * Unless required by applicable law or agreed to in writing, software        *\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,          *\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   *\n+ * See the License for the specific language governing permissions and        *\n+ * limitations under the License.                                             *\n+ * -------------------------------------------------------------------------- */\n+\n+#include \"SimTKcommon.h\"\n+#include <OpenSim/Common/Component.h>\n+#include <OpenSim/Common/Set.h>\n+#include \"ModelComponent.h\"\n+#include \"Appearance.h\"\n+\n+namespace OpenSim { \n+\n+class PhysicalFrame;\n+class Model;\n+class Frame;\n+class ModelComponent;\n+//=============================================================================\n+//=============================================================================\n+/**\n+ Class Geometry is intended to be used as the base class for all\n+ geometry that needs to be represented in the system, including mesh files, \n+ and built in analytic shapes. Any ModelComponent can specify a list of\n+ Geometry items to represent itself in graphics window. The relation between\n+ a ModelComponent and specific Geometry utilizes the Component mechanism, as\n+ the specific pieces of geometry are treated as subcomponents. The placement\n+ of the Geometry in 3D spae is computed from the Frame that the Geometry is\n+ \"Connected\" to.\n+\n+ Geometry (and all its subclasses) serve as the set of higher level primitives\n+ available to OpenSim component writers to express the Geometry of interest.\n+ The Geometry class handles serialization and also the translation to a set of\n+ DecorativeGeometry objects that gets passed to the Visualization system to be\n+ rendered. \n+\n+ @author Ayman Habib\n+ */\n+\n+// Base Geometry\n+class OSIMSIMULATION_API Geometry : public Component {\n+    OpenSim_DECLARE_ABSTRACT_OBJECT(Geometry, Component);\n+public:\n+    // Properties common to all Geometry types are included as Properties\n+    // of the base class.\n+    // Scale factors\n+    OpenSim_DECLARE_PROPERTY(scale_factors, SimTK::Vec3,\n+        \"Scale factors in X, Y, Z directions respectively.\");\n+    // Default display properiies e.g. Representation, color, texture, etc.\n+    OpenSim_DECLARE_UNNAMED_PROPERTY(Appearance,\n+        \"Default appearance for this Geometry\");\n+\n+    enum DisplayPreference {\n+        Hide = 0,       ///<Hide geometry from display\n+        DrawPoints = 1, ///< Use a cloud of points.\n+        DrawWireframe = 2, ///< Use a line drawing.\n+        DrawSurface = 3, ///< Use a shaded surface.\n+\n+        DrawDefault = -1  ///< Let someone else decide.\n+    };\n+    //--------------------------------------------------------------------------\n+    // CONSTRUCTION\n+    //--------------------------------------------------------------------------\n+public:\n+    /// Default constructor, does nothing\n+    Geometry()\n+    {\n+        setNull();\n+        constructInfrastructure();\n+\n+        constructProperty_scale_factors(SimTK::Vec3(1));\n+        constructProperty_Appearance(Appearance());\n+    }\n+    /// Default destructor\n+    virtual ~Geometry() {}\n+    /** Interface methods to handle the Frame which the Geometry is attached to.\n+    **/\n+    /** Set the name of the Frame of attachment **/\n+    void setFrameName(const std::string& name);\n+    /** Return a reference to the name of the Frame to which\n+    this Geometry is attached (using a Connector). **/\n+    const std::string& getFrameName() const;\n+    /** Return a reference to the actual Frame to which this Geometry\n+    is attached. */\n+    const PhysicalFrame& getFrame() const;\n+    //==========================================================================","path":"OpenSim/Simulation/Model/Geometry.h","position":105,"original_position":105,"commit_id":"92a2831e39357a222c4a9f63303d4334194fc808","original_commit_id":"2490126110e7b27fef435cb18d445147a3066f26","user":{"login":"aseth1","id":6494122,"avatar_url":"https://avatars.githubusercontent.com/u/6494122?v=3","gravatar_id":"","url":"https://api.github.com/users/aseth1","html_url":"https://github.com/aseth1","followers_url":"https://api.github.com/users/aseth1/followers","following_url":"https://api.github.com/users/aseth1/following{/other_user}","gists_url":"https://api.github.com/users/aseth1/gists{/gist_id}","starred_url":"https://api.github.com/users/aseth1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aseth1/subscriptions","organizations_url":"https://api.github.com/users/aseth1/orgs","repos_url":"https://api.github.com/users/aseth1/repos","events_url":"https://api.github.com/users/aseth1/events{/privacy}","received_events_url":"https://api.github.com/users/aseth1/received_events","type":"User","site_admin":false},"body":"Setting the Frame directly when you have it in hand would be helpful too!","created_at":"2015-05-07T06:06:11Z","updated_at":"2015-05-07T06:06:11Z","html_url":"https://github.com/opensim-org/opensim-core/pull/417#discussion_r29826639","pull_request_url":"https://api.github.com/repos/opensim-org/opensim-core/pulls/417","_links":{"self":{"href":"https://api.github.com/repos/opensim-org/opensim-core/pulls/comments/29826639"},"html":{"href":"https://github.com/opensim-org/opensim-core/pull/417#discussion_r29826639"},"pull_request":{"href":"https://api.github.com/repos/opensim-org/opensim-core/pulls/417"}}},"pull_request":{"url":"https://api.github.com/repos/opensim-org/opensim-core/pulls/417","id":34073529,"html_url":"https://github.com/opensim-org/opensim-core/pull/417","diff_url":"https://github.com/opensim-org/opensim-core/pull/417.diff","patch_url":"https://github.com/opensim-org/opensim-core/pull/417.patch","issue_url":"https://api.github.com/repos/opensim-org/opensim-core/issues/417","number":417,"state":"open","locked":false,"title":"Geometry integration ","user":{"login":"aymanhab","id":3972208,"avatar_url":"https://avatars.githubusercontent.com/u/3972208?v=3","gravatar_id":"","url":"https://api.github.com/users/aymanhab","html_url":"https://github.com/aymanhab","followers_url":"https://api.github.com/users/aymanhab/followers","following_url":"https://api.github.com/users/aymanhab/following{/other_user}","gists_url":"https://api.github.com/users/aymanhab/gists{/gist_id}","starred_url":"https://api.github.com/users/aymanhab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aymanhab/subscriptions","organizations_url":"https://api.github.com/users/aymanhab/orgs","repos_url":"https://api.github.com/users/aymanhab/repos","events_url":"https://api.github.com/users/aymanhab/events{/privacy}","received_events_url":"https://api.github.com/users/aymanhab/received_events","type":"User","site_admin":false},"body":"This is not an actual PR, just a place to conduct discussion regarding issues that will need to be resolved before the actual PR. Please do not review now as it is WIP. Separate issues will be opened accordingly.","created_at":"2015-04-24T18:25:00Z","updated_at":"2015-05-07T06:06:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"dda3465faac835a1263971e0b5e59ed9881dc30e","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/opensim-org/opensim-core/pulls/417/commits","review_comments_url":"https://api.github.com/repos/opensim-org/opensim-core/pulls/417/comments","review_comment_url":"https://api.github.com/repos/opensim-org/opensim-core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/opensim-org/opensim-core/issues/417/comments","statuses_url":"https://api.github.com/repos/opensim-org/opensim-core/statuses/92a2831e39357a222c4a9f63303d4334194fc808","head":{"label":"opensim-org:geometry_integration_tabs","ref":"geometry_integration_tabs","sha":"92a2831e39357a222c4a9f63303d4334194fc808","user":{"login":"opensim-org","id":4370782,"avatar_url":"https://avatars.githubusercontent.com/u/4370782?v=3","gravatar_id":"","url":"https://api.github.com/users/opensim-org","html_url":"https://github.com/opensim-org","followers_url":"https://api.github.com/users/opensim-org/followers","following_url":"https://api.github.com/users/opensim-org/following{/other_user}","gists_url":"https://api.github.com/users/opensim-org/gists{/gist_id}","starred_url":"https://api.github.com/users/opensim-org/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opensim-org/subscriptions","organizations_url":"https://api.github.com/users/opensim-org/orgs","repos_url":"https://api.github.com/users/opensim-org/repos","events_url":"https://api.github.com/users/opensim-org/events{/privacy}","received_events_url":"https://api.github.com/users/opensim-org/received_events","type":"Organization","site_admin":false},"repo":{"id":20775600,"name":"opensim-core","full_name":"opensim-org/opensim-core","owner":{"login":"opensim-org","id":4370782,"avatar_url":"https://avatars.githubusercontent.com/u/4370782?v=3","gravatar_id":"","url":"https://api.github.com/users/opensim-org","html_url":"https://github.com/opensim-org","followers_url":"https://api.github.com/users/opensim-org/followers","following_url":"https://api.github.com/users/opensim-org/following{/other_user}","gists_url":"https://api.github.com/users/opensim-org/gists{/gist_id}","starred_url":"https://api.github.com/users/opensim-org/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opensim-org/subscriptions","organizations_url":"https://api.github.com/users/opensim-org/orgs","repos_url":"https://api.github.com/users/opensim-org/repos","events_url":"https://api.github.com/users/opensim-org/events{/privacy}","received_events_url":"https://api.github.com/users/opensim-org/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/opensim-org/opensim-core","description":"SimTK OpenSim C++ libraries and comand-line applications and Java/Python wrapping.","fork":false,"url":"https://api.github.com/repos/opensim-org/opensim-core","forks_url":"https://api.github.com/repos/opensim-org/opensim-core/forks","keys_url":"https://api.github.com/repos/opensim-org/opensim-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/opensim-org/opensim-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/opensim-org/opensim-core/teams","hooks_url":"https://api.github.com/repos/opensim-org/opensim-core/hooks","issue_events_url":"https://api.github.com/repos/opensim-org/opensim-core/issues/events{/number}","events_url":"https://api.github.com/repos/opensim-org/opensim-core/events","assignees_url":"https://api.github.com/repos/opensim-org/opensim-core/assignees{/user}","branches_url":"https://api.github.com/repos/opensim-org/opensim-core/branches{/branch}","tags_url":"https://api.github.com/repos/opensim-org/opensim-core/tags","blobs_url":"https://api.github.com/repos/opensim-org/opensim-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/opensim-org/opensim-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/opensim-org/opensim-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/opensim-org/opensim-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/opensim-org/opensim-core/statuses/{sha}","languages_url":"https://api.github.com/repos/opensim-org/opensim-core/languages","stargazers_url":"https://api.github.com/repos/opensim-org/opensim-core/stargazers","contributors_url":"https://api.github.com/repos/opensim-org/opensim-core/contributors","subscribers_url":"https://api.github.com/repos/opensim-org/opensim-core/subscribers","subscription_url":"https://api.github.com/repos/opensim-org/opensim-core/subscription","commits_url":"https://api.github.com/repos/opensim-org/opensim-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/opensim-org/opensim-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/opensim-org/opensim-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/opensim-org/opensim-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/opensim-org/opensim-core/contents/{+path}","compare_url":"https://api.github.com/repos/opensim-org/opensim-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/opensim-org/opensim-core/merges","archive_url":"https://api.github.com/repos/opensim-org/opensim-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/opensim-org/opensim-core/downloads","issues_url":"https://api.github.com/repos/opensim-org/opensim-core/issues{/number}","pulls_url":"https://api.github.com/repos/opensim-org/opensim-core/pulls{/number}","milestones_url":"https://api.github.com/repos/opensim-org/opensim-core/milestones{/number}","notifications_url":"https://api.github.com/repos/opensim-org/opensim-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/opensim-org/opensim-core/labels{/name}","releases_url":"https://api.github.com/repos/opensim-org/opensim-core/releases{/id}","created_at":"2014-06-12T16:57:56Z","updated_at":"2015-04-30T22:40:45Z","pushed_at":"2015-05-07T05:51:17Z","git_url":"git://github.com/opensim-org/opensim-core.git","ssh_url":"git@github.com:opensim-org/opensim-core.git","clone_url":"https://github.com/opensim-org/opensim-core.git","svn_url":"https://github.com/opensim-org/opensim-core","homepage":"opensim.stanford.edu","size":112877,"stargazers_count":9,"watchers_count":9,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":8,"mirror_url":null,"open_issues_count":180,"forks":8,"open_issues":180,"watchers":9,"default_branch":"master"}},"base":{"label":"opensim-org:master","ref":"master","sha":"f1274bf696b1e7de58be9b11d2cad82c30a344f0","user":{"login":"opensim-org","id":4370782,"avatar_url":"https://avatars.githubusercontent.com/u/4370782?v=3","gravatar_id":"","url":"https://api.github.com/users/opensim-org","html_url":"https://github.com/opensim-org","followers_url":"https://api.github.com/users/opensim-org/followers","following_url":"https://api.github.com/users/opensim-org/following{/other_user}","gists_url":"https://api.github.com/users/opensim-org/gists{/gist_id}","starred_url":"https://api.github.com/users/opensim-org/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opensim-org/subscriptions","organizations_url":"https://api.github.com/users/opensim-org/orgs","repos_url":"https://api.github.com/users/opensim-org/repos","events_url":"https://api.github.com/users/opensim-org/events{/privacy}","received_events_url":"https://api.github.com/users/opensim-org/received_events","type":"Organization","site_admin":false},"repo":{"id":20775600,"name":"opensim-core","full_name":"opensim-org/opensim-core","owner":{"login":"opensim-org","id":4370782,"avatar_url":"https://avatars.githubusercontent.com/u/4370782?v=3","gravatar_id":"","url":"https://api.github.com/users/opensim-org","html_url":"https://github.com/opensim-org","followers_url":"https://api.github.com/users/opensim-org/followers","following_url":"https://api.github.com/users/opensim-org/following{/other_user}","gists_url":"https://api.github.com/users/opensim-org/gists{/gist_id}","starred_url":"https://api.github.com/users/opensim-org/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opensim-org/subscriptions","organizations_url":"https://api.github.com/users/opensim-org/orgs","repos_url":"https://api.github.com/users/opensim-org/repos","events_url":"https://api.github.com/users/opensim-org/events{/privacy}","received_events_url":"https://api.github.com/users/opensim-org/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/opensim-org/opensim-core","description":"SimTK OpenSim C++ libraries and comand-line applications and Java/Python wrapping.","fork":false,"url":"https://api.github.com/repos/opensim-org/opensim-core","forks_url":"https://api.github.com/repos/opensim-org/opensim-core/forks","keys_url":"https://api.github.com/repos/opensim-org/opensim-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/opensim-org/opensim-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/opensim-org/opensim-core/teams","hooks_url":"https://api.github.com/repos/opensim-org/opensim-core/hooks","issue_events_url":"https://api.github.com/repos/opensim-org/opensim-core/issues/events{/number}","events_url":"https://api.github.com/repos/opensim-org/opensim-core/events","assignees_url":"https://api.github.com/repos/opensim-org/opensim-core/assignees{/user}","branches_url":"https://api.github.com/repos/opensim-org/opensim-core/branches{/branch}","tags_url":"https://api.github.com/repos/opensim-org/opensim-core/tags","blobs_url":"https://api.github.com/repos/opensim-org/opensim-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/opensim-org/opensim-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/opensim-org/opensim-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/opensim-org/opensim-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/opensim-org/opensim-core/statuses/{sha}","languages_url":"https://api.github.com/repos/opensim-org/opensim-core/languages","stargazers_url":"https://api.github.com/repos/opensim-org/opensim-core/stargazers","contributors_url":"https://api.github.com/repos/opensim-org/opensim-core/contributors","subscribers_url":"https://api.github.com/repos/opensim-org/opensim-core/subscribers","subscription_url":"https://api.github.com/repos/opensim-org/opensim-core/subscription","commits_url":"https://api.github.com/repos/opensim-org/opensim-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/opensim-org/opensim-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/opensim-org/opensim-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/opensim-org/opensim-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/opensim-org/opensim-core/contents/{+path}","compare_url":"https://api.github.com/repos/opensim-org/opensim-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/opensim-org/opensim-core/merges","archive_url":"https://api.github.com/repos/opensim-org/opensim-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/opensim-org/opensim-core/downloads","issues_url":"https://api.github.com/repos/opensim-org/opensim-core/issues{/number}","pulls_url":"https://api.github.com/repos/opensim-org/opensim-core/pulls{/number}","milestones_url":"https://api.github.com/repos/opensim-org/opensim-core/milestones{/number}","notifications_url":"https://api.github.com/repos/opensim-org/opensim-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/opensim-org/opensim-core/labels{/name}","releases_url":"https://api.github.com/repos/opensim-org/opensim-core/releases{/id}","created_at":"2014-06-12T16:57:56Z","updated_at":"2015-04-30T22:40:45Z","pushed_at":"2015-05-07T05:51:17Z","git_url":"git://github.com/opensim-org/opensim-core.git","ssh_url":"git@github.com:opensim-org/opensim-core.git","clone_url":"https://github.com/opensim-org/opensim-core.git","svn_url":"https://github.com/opensim-org/opensim-core","homepage":"opensim.stanford.edu","size":112877,"stargazers_count":9,"watchers_count":9,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":8,"mirror_url":null,"open_issues_count":180,"forks":8,"open_issues":180,"watchers":9,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/opensim-org/opensim-core/pulls/417"},"html":{"href":"https://github.com/opensim-org/opensim-core/pull/417"},"issue":{"href":"https://api.github.com/repos/opensim-org/opensim-core/issues/417"},"comments":{"href":"https://api.github.com/repos/opensim-org/opensim-core/issues/417/comments"},"review_comments":{"href":"https://api.github.com/repos/opensim-org/opensim-core/pulls/417/comments"},"review_comment":{"href":"https://api.github.com/repos/opensim-org/opensim-core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/opensim-org/opensim-core/pulls/417/commits"},"statuses":{"href":"https://api.github.com/repos/opensim-org/opensim-core/statuses/92a2831e39357a222c4a9f63303d4334194fc808"}}}}