本文整理汇总了C++中Polygon::Area方法的典型用法代码示例。如果您正苦于以下问题:C++ Polygon::Area方法的具体用法?C++ Polygon::Area怎么用?C++ Polygon::Area使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Polygon
的用法示例。
在下文中一共展示了Polygon::Area方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Volume
/** The implementation of this function is based on Graphics Gems 2, p. 170: "IV.1. Area of Planar Polygons and Volume of Polyhedra." */
float Polyhedron::Volume() const
{
float volume = 0.f;
for(int i = 0; i < NumFaces(); ++i)
{
Polygon face = FacePolygon(i); ///@todo Optimize temporary copies.
volume += face.Vertex(0).Dot(face.NormalCCW()) * face.Area();
}
return Abs(volume) / 3.f;
}
示例2: Load
int Zone::Load( Monitor *monitor, Zone **&zones )
{
static char sql[ZM_SQL_MED_BUFSIZ];
snprintf( sql, sizeof(sql), "select Id,Name,Type+0,Units,Coords,AlarmRGB,CheckMethod+0,MinPixelThreshold,MaxPixelThreshold,MinAlarmPixels,MaxAlarmPixels,FilterX,FilterY,MinFilterPixels,MaxFilterPixels,MinBlobPixels,MaxBlobPixels,MinBlobs,MaxBlobs,OverloadFrames from Zones where MonitorId = %d order by Type, Id", monitor->Id() );
if ( mysql_query( &dbconn, sql ) )
{
Error( "Can't run query: %s", mysql_error( &dbconn ) );
exit( mysql_errno( &dbconn ) );
}
MYSQL_RES *result = mysql_store_result( &dbconn );
if ( !result )
{
Error( "Can't use query result: %s", mysql_error( &dbconn ) );
exit( mysql_errno( &dbconn ) );
}
int n_zones = mysql_num_rows( result );
Debug( 1, "Got %d zones for monitor %s", n_zones, monitor->Name() );
delete[] zones;
zones = new Zone *[n_zones];
for( int i = 0; MYSQL_ROW dbrow = mysql_fetch_row( result ); i++ )
{
int col = 0;
int Id = atoi(dbrow[col++]);
const char *Name = dbrow[col++];
int Type = atoi(dbrow[col++]);
const char *Units = dbrow[col++];
const char *Coords = dbrow[col++];
int AlarmRGB = dbrow[col]?atoi(dbrow[col]):0; col++;
int CheckMethod = atoi(dbrow[col++]);
int MinPixelThreshold = dbrow[col]?atoi(dbrow[col]):0; col++;
int MaxPixelThreshold = dbrow[col]?atoi(dbrow[col]):0; col++;
int MinAlarmPixels = dbrow[col]?atoi(dbrow[col]):0; col++;
int MaxAlarmPixels = dbrow[col]?atoi(dbrow[col]):0; col++;
int FilterX = dbrow[col]?atoi(dbrow[col]):0; col++;
int FilterY = dbrow[col]?atoi(dbrow[col]):0; col++;
int MinFilterPixels = dbrow[col]?atoi(dbrow[col]):0; col++;
int MaxFilterPixels = dbrow[col]?atoi(dbrow[col]):0; col++;
int MinBlobPixels = dbrow[col]?atoi(dbrow[col]):0; col++;
int MaxBlobPixels = dbrow[col]?atoi(dbrow[col]):0; col++;
int MinBlobs = dbrow[col]?atoi(dbrow[col]):0; col++;
int MaxBlobs = dbrow[col]?atoi(dbrow[col]):0; col++;
int OverloadFrames = dbrow[col]?atoi(dbrow[col]):0; col++;
/* HTML colour code is actually BGR in memory, we want RGB */
AlarmRGB = rgb_convert(AlarmRGB, ZM_SUBPIX_ORDER_BGR);
Debug( 5, "Parsing polygon %s", Coords );
Polygon polygon;
if ( !ParsePolygonString( Coords, polygon ) )
Panic( "Unable to parse polygon string '%s' for zone %d/%s for monitor %s", Coords, Id, Name, monitor->Name() );
if ( polygon.LoX() < 0 || polygon.HiX() >= (int)monitor->Width()
|| polygon.LoY() < 0 || polygon.HiY() >= (int)monitor->Height() )
Panic( "Zone %d/%s for monitor %s extends outside of image dimensions, %d, %d, %d, %d", Id, Name, monitor->Name(), polygon.LoX(), polygon.LoY(), polygon.HiX(), polygon.HiY() );
if ( false && !strcmp( Units, "Percent" ) )
{
MinAlarmPixels = (MinAlarmPixels*polygon.Area())/100;
MaxAlarmPixels = (MaxAlarmPixels*polygon.Area())/100;
MinFilterPixels = (MinFilterPixels*polygon.Area())/100;
MaxFilterPixels = (MaxFilterPixels*polygon.Area())/100;
MinBlobPixels = (MinBlobPixels*polygon.Area())/100;
MaxBlobPixels = (MaxBlobPixels*polygon.Area())/100;
}
if ( atoi(dbrow[2]) == Zone::INACTIVE )
{
zones[i] = new Zone( monitor, Id, Name, polygon );
}
else
{
zones[i] = new Zone( monitor, Id, Name, (Zone::ZoneType)Type, polygon, AlarmRGB, (Zone::CheckMethod)CheckMethod, MinPixelThreshold, MaxPixelThreshold, MinAlarmPixels, MaxAlarmPixels, Coord( FilterX, FilterY ), MinFilterPixels, MaxFilterPixels, MinBlobPixels, MaxBlobPixels, MinBlobs, MaxBlobs, OverloadFrames );
}
}
if ( mysql_errno( &dbconn ) )
{
Error( "Can't fetch row: %s", mysql_error( &dbconn ) );
exit( mysql_errno( &dbconn ) );
}
// Yadda yadda
mysql_free_result( result );
return( n_zones );
}