Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page

# How should I choose the starting vertex for horizontal surfaces?

In the GlobalGeometryRules object the field Starting Vertex Position defines the first vertex in the surface perimeter. The options are UpperLeftCorner, LowerLeftCorner, UpperRightCorner, or LowerRightCorner. This is simple enough for vertical surfaces where "Upper" and "Lower" refer to the z-axis, and "Left" and "Right" are as seen from outside the surface.

However, if the surface is horizontal then up, down, left and right are undefined.

So is there a suggested way to order the vertices of a horizontal surface? Does it matter what order they are in for horizontal surfaces?

edit retag close merge delete

Your question seems to confuse 'order' and 'Start point'. I think the sequence is important but the start point is arbitrary. You can define left and right for the horizontal surface. Either look from the zone in the direction of the surface normal, or at the surface, looking into the zone.

( 2016-08-20 16:49:47 -0500 )edit

Order includes both start point and direction. The start point is not arbitrary, it's apparently needed for shading calculations and is how to choose it is defined in the global geometry rules. The problem is what is an "upper" corner in a horizontal surface?

( 2016-08-21 20:55:39 -0500 )edit

can u adopt your own convention? Are you getting errors when running e+? Maybe you could say X axis is up/down, Y axis is left right...

( 2016-08-22 00:08:54 -0500 )edit

Yes, I can adopt a convention, but I'd rather use an established one if one exists. No errors as yet, but then I'm not currently running any models, I'm working on automated geometry intersection and matching in Python and want to ensure any newly-created surfaces follow the global geometry rules.

( 2016-08-22 04:32:55 -0500 )edit

I am using counter clockwise in the direction of surface. and it works fine. I was getting errors , but now it works for my E+.

( 2018-11-04 22:36:54 -0500 )edit

Sort by ยป oldest newest most voted

I'm not sure where this is used in E+ anymore, adding simple windows maybe? The problem is under defined in the case of horizontal surfaces, here is the algorithm OpenStudio uses. We ran across the same difficulty defining azimuth for horizontal surfaces in gbXml output, it would be nice to standardize on an approach.

more

Thanks. This is within eppy so following the OpenStudio algorithm is a reasonable approach I think.

( 2016-08-22 01:56:01 -0500 )edit

So if I'm reading that correctly, if the surface is horizontal then upper is defined as along the y-axis?

( 2016-08-22 03:14:17 -0500 )edit

Yes "up" is y and "left" is negative x for horizontal surfaces. It's worth noting that these are in relative space coordinates which may be rotated from global coordinates (not an issue for vertical surfaces because space rotations are only in the x-y plane). I've been kicking around the idea of refactoring OpenStudio's geometry functions into a new building energy geometry library with very minimal dependencies. The library would be C++ but ported to other languages (e.g. C#, Python, Ruby). Here is a google doc with some thoughts.

( 2016-08-22 10:55:03 -0500 )edit

The hope would be that if we could get multiple software projects (OpenStudio, EnergyPlus, Eppy, gbxml.org, etc) working with the same geometry library we would end up with better algorithms that would be standardized. It would also have better integration with the 2D floorprint geometry editor that we will be working on in the next year. Please request access to either of these docs if you are interested.

( 2016-08-22 10:59:06 -0500 )edit

Permissions problem? "Sorry, the file you have requested does not exist." on the doc in your first comment - I'd potentially be interested in helping out on the porting to Python though. Potentially just wrapping the C++ in Cython, as with pyclipper.

( 2016-08-22 11:01:25 -0500 )edit

Order them counter-clockwise. For consistency with the default, start at the upper left corner. The upper left corner for a horizontal surface is underdefined.

The Online help for GlobalGeometry Rules tells us that the shadowing algorithms require the vertices 'in a certain order and positional structure' and goes on to say Surfaces are always 'viewed from the outside of the zone'

The Engineering Reference includes the key detail: 'listed counter-clockwise'. All of this can be summarised as 'use the right hand rule'. There is some missing info for horizontal surfaces.

more

My question is what is "upper left" in the context of a horizontal surface? Clockwise or counterclockwise is not the issue.

( 2016-08-21 20:51:57 -0500 )edit