本文整理汇总了C++中poly函数的典型用法代码示例。如果您正苦于以下问题:C++ poly函数的具体用法?C++ poly怎么用?C++ poly使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了poly函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: VEC3
SimpleGMap2::SimpleGMap2()
{
position = myMap.addAttribute<VEC3, VERTEX>("position");
Dart d = Algo::Modelisation::createTetrahedron<PFP>(myMap);
position[d] = VEC3(0,0,0);
position[myMap.phi1(d)] = VEC3(10,0,15);
position[myMap.phi_1(d)] = VEC3(10,20,15);
position[myMap.phi_1(myMap.phi2(d))] = VEC3(0,0,30);
VEC3 mid = (position[d] + position[myMap.phi1(d)]) / 2.0f;
myMap.cutEdge(d);
position[myMap.phi1(d)] = mid;
Algo::Modelisation::Polyhedron<PFP> poly(myMap, position);
d = poly.cylinder_topo(5, 1, false, false);
poly.embedCylinder(10, 10, 5);
d = myMap.phi1(d);
Dart dd = myMap.beta2(d);
myMap.unsewFaces(d);
myMap.sewFaces(d, dd);
position[d][1] += 3.0f;
}
开发者ID:codistmonk,项目名称:CGoGN,代码行数:27,代码来源:simpleGMap2.cpp
示例2: read_polygon_xyz
void read_polygon_xyz(boost::ptr_vector<geometry_type> & paths)
{
int num_rings = read_integer();
if (num_rings > 0)
{
std::unique_ptr<geometry_type> poly(new geometry_type(geometry_type::types::Polygon));
for (int i = 0; i < num_rings; ++i)
{
int num_points = read_integer();
if (num_points > 0)
{
CoordinateArray ar(num_points);
read_coords_xyz(ar);
poly->move_to(ar[0].x, ar[0].y);
for (int j = 1; j < num_points; ++j)
{
poly->line_to(ar[j].x, ar[j].y);
}
poly->close_path();
}
}
if (poly->size() > 2) // ignore if polygon has less than 3 vertices
paths.push_back(poly.release());
}
}
开发者ID:GISpecialist,项目名称:mapnik,代码行数:25,代码来源:wkb.cpp
示例3: drawpoly
/*
* drawpoly
*
* draw some polygons
*/
void
drawpoly()
{
float vec[3];
short val;
color(YELLOW);
/*
* Draw a polygon using poly, parray is our array of
* points and 4 is the number of points in it.
*/
poly(4L, parray);
color(GREEN);
/*
* Draw a 5 sided figure by using bgnpolygon, v3d, and endpolygon
*/
polymode(PYM_LINE);
bgnpolygon();
vec[0] = 0.0;
vec[1] = 0.0;
vec[2] = 0.0;
v3f(vec);
vec[0] = 3.0;
vec[1] = 0.0;
vec[2] = 0.0;
v3f(vec);
vec[0] = 3.0;
vec[1] = 4.0;
vec[2] = 0.0;
v3f(vec);
vec[0] = -1.0;
vec[1] = 5.0;
vec[2] = 0.0;
v3f(vec);
vec[0] = -2.0;
vec[1] = 2.0;
vec[2] = 0.0;
v3f(vec);
endpolygon();
color(MAGENTA);
/*
* draw a sector representing a 1/4 circle
*/
arc(1.5, -7.0, 3.0, 0, 900);
move2(1.5, -7.0);
draw2(1.5, -4.0);
move2(1.5, -7.0);
draw2(4.5, -7.0);
qread(&val);
}
开发者ID:Milkyway-at-home,项目名称:nemo,代码行数:63,代码来源:poly.c
示例4: if
bool monster::make_fungus()
{
char polypick = 0;
std::string tid = type->id;
if (type->in_species("FUNGUS")) { // No friendly-fungalizing ;-)
return true;
}
if (tid == "mon_ant" || tid == "mon_ant_soldier" || tid == "mon_ant_queen" || tid == "mon_fly" ||
tid == "mon_bee" || tid == "mon_dermatik") {
polypick = 1;
} else if (tid == "mon_zombie" || tid == "mon_zombie_shrieker" || tid == "mon_zombie_electric" ||
tid == "mon_zombie_spitter" || tid == "mon_zombie_dog" || tid == "mon_zombie_brute" ||
tid == "mon_zombie_hulk" || tid == "mon_zombie_soldier" || tid == "mon_zombie_tough" ||
tid == "mon_zombie_scientist" || tid == "mon_zombie_hunter" || tid == "mon_zombie_child"||
tid == "mon_zombie_bio_op" || tid == "mon_zombie_survivor" || tid == "mon_zombie_fireman" ||
tid == "mon_zombie_cop" || tid == "mon_zombie_fat" || tid == "mon_zombie_rot" ||
tid == "mon_zombie_swimmer" || tid == "mon_zombie_grabber" || tid == "mon_zombie_technician" ||
tid == "mon_zombie_brute_shocker") {
polypick = 2; // Necro and Master have enough Goo to resist conversion.
// Firefighter, hazmat, and scarred/beekeeper have the PPG on.
} else if (tid == "mon_zombie_necro" || tid == "mon_zombie_master" || tid == "mon_zombie_fireman" ||
tid == "mon_zombie_hazmat" || tid == "mon_beekeeper") {
return true;
} else if (tid == "mon_boomer" || tid == "mon_zombie_gasbag" || tid == "mon_zombie_smoker") {
polypick = 3;
} else if (tid == "mon_triffid" || tid == "mon_triffid_young" || tid == "mon_triffid_queen") {
polypick = 4;
}
switch (polypick) {
case 1: // bugs, why do they all turn into fungal ants?
poly(GetMType("mon_ant_fungus"));
return true;
case 2: // zombies, non-boomer
poly(GetMType("mon_zombie_fungus"));
return true;
case 3:
poly(GetMType("mon_boomer_fungus"));
return true;
case 4:
poly(GetMType("mon_fungaloid"));
return true;
default:
return false;
}
}
开发者ID:donhayes,项目名称:Cataclysm-DDA,代码行数:45,代码来源:monster.cpp
示例5: poly
Real DistLine3Circle3<Real>::GetSquared ()
{
Vector3<Real> diff = mLine->Origin - mCircle->Center;
Real diffSqrLen = diff.SquaredLength();
Real MdM = mLine->Direction.SquaredLength();
Real DdM = diff.Dot(mLine->Direction);
Real NdM = mCircle->Normal.Dot(mLine->Direction);
Real DdN = diff.Dot(mCircle->Normal);
Real a0 = DdM;
Real a1 = MdM;
Real b0 = DdM - NdM*DdN;
Real b1 = MdM - NdM*NdM;
Real c0 = diffSqrLen - DdN*DdN;
Real c1 = b0;
Real c2 = b1;
Real rsqr = mCircle->Radius*mCircle->Radius;
Real a0sqr = a0*a0;
Real a1sqr = a1*a1;
Real twoA0A1 = ((Real)2)*a0*a1;
Real b0sqr = b0*b0;
Real b1Sqr = b1*b1;
Real twoB0B1 = ((Real)2)*b0*b1;
Real twoC1 = ((Real)2)*c1;
// The minimum point B+t*M occurs when t is a root of the quartic
// equation whose coefficients are defined below.
Polynomial1<Real> poly(4);
poly[0] = a0sqr*c0 - b0sqr*rsqr;
poly[1] = twoA0A1*c0 + a0sqr*twoC1 - twoB0B1*rsqr;
poly[2] = a1sqr*c0 + twoA0A1*twoC1 + a0sqr*c2 - b1Sqr*rsqr;
poly[3] = a1sqr*twoC1 + twoA0A1*c2;
poly[4] = a1sqr*c2;
PolynomialRoots<Real> polyroots(Math<Real>::ZERO_TOLERANCE);
polyroots.FindB(poly, 6);
int count = polyroots.GetCount();
const Real* roots = polyroots.GetRoots();
Real minSqrDist = Math<Real>::MAX_REAL;
for (int i = 0; i < count; ++i)
{
// Compute distance from P(t) to circle.
Vector3<Real> P = mLine->Origin + roots[i]*mLine->Direction;
DistPoint3Circle3<Real> query(P, *mCircle);
Real sqrDist = query.GetSquared();
if (sqrDist < minSqrDist)
{
minSqrDist = sqrDist;
mClosestPoint0 = query.GetClosestPoint0();
mClosestPoint1 = query.GetClosestPoint1();
}
}
return minSqrDist;
}
开发者ID:rasslingcats,项目名称:calico,代码行数:57,代码来源:Wm5DistLine3Circle3.cpp
示例6: makePoly
poly makePoly( vecRef pos, scalar radius, int segments )
{
vertexList verts;
for (int i=0; i<segments; i++) {
scalar a = TWO_PI - i/scalar(segments) * TWO_PI; // ccw winding
verts.push_back( pos + radius * vec::polar(a) );
}
return poly( verts );
}
开发者ID:torbjoern,项目名称:ProtoWizard,代码行数:9,代码来源:main.cpp
示例7: dNtcResToTemp
// -----------------------------------------------------------------------------
double
dNtcResToTemp(double dR, double dCoeff[])
{
double ti;
ti = poly(log(dR), 3, dCoeff);
ti = 1.0 / ti + TABS;
return ti;
}
开发者ID:epsilonrt,项目名称:avrio,代码行数:10,代码来源:ntc.c
示例8: main
int main (void)
{
static int i;
int n;
printf("Please enter the maximum degree of the polynomial:\n");
scanf("%d", &n);
if(n>0){ //if power > 0 do followings
printf("Please enter the coefficients:\n");
for(i=0; i<=n; i++) //saving array a
{
scanf("%d", &a[i]);
}
for(i=0; i<=n; i++) //saving array b
{
b[9-i]=a[i];
}
printf("The polynomial is ");
poly(n);
printf("\nIts reciprocal is ");
print_reci(n);
printf("\nThe polynomial is");
compare(n);
}
else //if power < = 0 do nothing
{
}
}
开发者ID:oferoze,项目名称:Automarking,代码行数:56,代码来源:cw3a-reciprocal.cpp
示例9: poly
GeomShape *gpcPolygonToGeomShape( gpc_polygon *gpcPolygon ) {
GeomShape *geomShape = new GeomShape;
for( int i=0; i<gpcPolygon->num_contours; i++ ) {
GeomPoly poly( gpcPolygon->contour[i].num_vertices, (DVec2*)gpcPolygon->contour[i].vertex );
geomShape->addPoly( &poly, gpcPolygon->hole[i] );
}
return geomShape;
}
开发者ID:zsimpson,项目名称:plug_public,代码行数:10,代码来源:geom.cpp
示例10: makeseq
/*
* Генерация и печать битовой последовательности длины `len',
* используя сдвиговый регистр длины `N' с обратной связью `tap'.
*/
void makeseq (int tap, int len)
{
unsigned char seq [2*P];
int mem, i;
mem = 0;
for (i=0; i<P; ++i)
poly (&mem, tap, 1);
for (i=0; i<2*P; ++i)
seq [i] = poly (&mem, tap, 1);
printf ("\nx^%d + x^%d + 1 =\n", N, tap);
seqprint (seq, len);
/* hexprint (seq, len);*/
for (i=0; i<2*P; ++i)
seq [i] ^= 1;
seqprint (seq, len);
}
开发者ID:denrusio,项目名称:vak-opensource,代码行数:23,代码来源:poly1.c
示例11: test_polygon_Bbox
void test_polygon_Bbox()
{
Point_E3d P1(-5,-4,-3);
Point_E3d P2( 5, 4, 3);
Point_E3d P[] = { P1, P2, Point_E3d(-2, 2, 2) };
Polygon_E3d poly(P, P+3);
Bbox_E3d box = poly.get_Bbox();
assert( box == Bbox_E3d(P1, P2) );
}
开发者ID:ghali,项目名称:DelCapo,代码行数:10,代码来源:test_e3.cpp
示例12: poly
Polynomial1<Real> IntrEllipse2Ellipse2<Real>::GetQuartic (
const Ellipse2<Real>& ellipse0, const Ellipse2<Real>& ellipse1)
{
Real p0[6], p1[6];
ellipse0.ToCoefficients(p0);
ellipse1.ToCoefficients(p1);
// The polynomials are
// P0 = a0 + a1*x + a2*y + a3*x^2 + a4*x*y + a5*y^2
// = (a0 + a2*y + a5*y^2) + (a1 + a4*y)*x + (a3)*x^2
// = u0(y) + u1(y)*x + u2(y)*x^2
// P1 = b0 + b1*x + b2*y + b3*x^2 + b4*x*y + b5*y^2
// = (b0 + b2*y + b5*y^2) + (b1 + b4*y)*x + (b3)*x^2
// = v0(y) + v1(y)*x + v2(y)*x^2
// The Bezout determinant eliminates the variable x when solving the
// equations P0(x,y) = 0 and P1(x,y) = 0. We have
// 0 = P0 = u0 + u1*x + u2*x^2
// 0 = P1 = v0 + v1*x + v2*x^2
// 0 = v2*P0 - u2*P1 = (u0*v2 - u2*v0) + (u1*v2 - u2*v1)*x
// 0 = v1*P0 - u1*P1 = (u0*v1 - u1*v0) + (u2*v1 - u1*v2)*x^2
// Solve the equation 0 = v2*P0-u2*P1 for x and substitute in the other
// equation and simplify to
// Q(y) = (u0*v1-v1*u0)*(u1*v2-u2*v1) - (u0*v2-u2*v0)^2 = 0
// = c0 + c1*y + c2*y^2 + c3*y^3 + c4*y^4
// Define dij = ai*bj - aj*bi for various indices i and j. For example,
// d01 = a0*b1-b1*a0. The coefficients of Q(y) are
// c0 = d01*d13 - d30^2
// c1 = d01*d43 + (d04+d21)*d13 - 2*d30*d32
// c2 = (d04+d21)*d43 + (d24+d51)*d13 - 2*d30*d35 - d32^2
// c3 = (d24+d51)*d43 + d54*d13 - 2*d32*d35
// c4 = d54*d43 - d35^2
Real d01 = p0[0]*p1[1] - p0[1]*p1[0];
Real d04 = p0[0]*p1[4] - p0[4]*p1[0];
Real d13 = p0[1]*p1[3] - p0[3]*p1[1];
Real d21 = p0[2]*p1[1] - p0[1]*p1[2];
Real d24 = p0[2]*p1[4] - p0[4]*p1[2];
Real d30 = p0[3]*p1[0] - p0[0]*p1[3];
Real d32 = p0[3]*p1[2] - p0[2]*p1[3];
Real d35 = p0[3]*p1[5] - p0[5]*p1[3];
Real d43 = p0[4]*p1[3] - p0[3]*p1[4];
Real d51 = p0[5]*p1[1] - p0[1]*p1[5];
Real d54 = p0[5]*p1[4] - p0[4]*p1[5];
Real d04p21 = d04 + d21;
Real d24p51 = d24 + d51;
Polynomial1<Real> poly(4);
poly[0] = d01*d13 - d30*d30;
poly[1] = d01*d43 + d04p21*d13 - ((Real)2)*d30*d32;
poly[2] = d04p21*d43 + d24p51*d13 - ((Real)2)*d30*d35 - d32*d32;
poly[3] = d24p51*d43 + d54*d13 - ((Real)2)*d32*d35;
poly[4] = d54*d43 - d35*d35;
return poly;
}
开发者ID:JackTing,项目名称:SkpColl,代码行数:55,代码来源:Wm5IntrEllipse2Ellipse2.cpp
示例13: poly
void AverageAreaGridDensityProvider::initialize(const real proscenium[4], real sizeFactor)
{
float prosceniumWidth = (proscenium[1] - proscenium[0]);
float prosceniumHeight = (proscenium[3] - proscenium[2]);
real cellArea = 0.0;
unsigned numFaces = 0;
for (source.begin(); source.isValid(); source.next()) {
Polygon3r& poly(source.getGridSpacePolygon());
Vec3r min, max;
poly.getBBox(min, max);
cellArea += (max[0] - min[0]) * (max[1] - min[1]);
++numFaces;
}
if (G.debug & G_DEBUG_FREESTYLE) {
cout << "Total area: " << cellArea << ". Number of faces: " << numFaces << "." << endl;
}
cellArea /= numFaces;
cellArea *= sizeFactor;
if (G.debug & G_DEBUG_FREESTYLE) {
cout << "Building grid with average area " << cellArea << endl;
}
_cellSize = sqrt(cellArea);
unsigned maxCells = 931; // * 1.1 = 1024
if (std::max(prosceniumWidth, prosceniumHeight) / _cellSize > maxCells) {
if (G.debug & G_DEBUG_FREESTYLE) {
cout << "Scene-dependent cell size (" << _cellSize << " square) is too small." << endl;
}
_cellSize = std::max(prosceniumWidth, prosceniumHeight) / maxCells;
}
// Now we know how many cells make each side of our grid
_cellsX = ceil(prosceniumWidth / _cellSize);
_cellsY = ceil(prosceniumHeight / _cellSize);
if (G.debug & G_DEBUG_FREESTYLE) {
cout << _cellsX << "x" << _cellsY << " cells of size " << _cellSize << " square." << endl;
}
// Make sure the grid exceeds the proscenium by a small amount
float safetyZone = 0.1f;
if (_cellsX * _cellSize < prosceniumWidth * (1.0 + safetyZone)) {
_cellsX = ceil(prosceniumWidth * (1.0 + safetyZone) / _cellSize);
}
if (_cellsY * _cellSize < prosceniumHeight * (1.0 + safetyZone)) {
_cellsY = ceil(prosceniumHeight * (1.0 + safetyZone) / _cellSize);
}
if (G.debug & G_DEBUG_FREESTYLE) {
cout << _cellsX << "x" << _cellsY << " cells of size " << _cellSize << " square." << endl;
}
// Find grid origin
_cellOrigin[0] = ((proscenium[0] + proscenium[1]) / 2.0) - (_cellsX / 2.0) * _cellSize;
_cellOrigin[1] = ((proscenium[2] + proscenium[3]) / 2.0) - (_cellsY / 2.0) * _cellSize;
}
开发者ID:Andrewson3D,项目名称:blender-for-vray,代码行数:54,代码来源:AverageAreaGridDensityProvider.cpp
示例14: poly
void
PolynomialFitTest::sample()
{
PolynomialFit poly( *_x, *_y, 2 );
poly.generate();
CPPUNIT_ASSERT( std::abs(poly.sample( -2. ) - 4) < _tol );
CPPUNIT_ASSERT( std::abs(poly.sample( -1. ) - 1) < _tol );
CPPUNIT_ASSERT( std::abs(poly.sample( 0. ) - 0) < _tol );
CPPUNIT_ASSERT( std::abs(poly.sample( 1. ) - 1) < _tol );
CPPUNIT_ASSERT( std::abs(poly.sample( 2. ) - 4) < _tol );
}
开发者ID:AhmedAly83,项目名称:moose,代码行数:12,代码来源:PolynomialFitTest.C
示例15: main
int main(int argc, char const *argv[]) {
int i;
double a[MAXN];
for (i = 0; i < MAXN; i++) a[i]=(double)i;
start=clock();
poly(MAXN-1,a,1.1);
stop=clock();
duration = ((double)(stop-start))/CLK_TCK;
printf("%f\n",(double)duration );
return 0;
}
开发者ID:mafanhe,项目名称:DataStruct,代码行数:12,代码来源:polynomial.c
示例16: drawpolys
int drawpolys(Polys *p)
{
int i;
int l;
for (i=0; i<p->polyc;i++){
l = *(p->polyl+i);
poly(*(p->x+i), *(p->y+i), l);
}
return 0;
}
开发者ID:noisegate,项目名称:fbpy,代码行数:12,代码来源:fbutils.c
示例17: poly
void El_Window::hach
(
std::vector<Pt2dr> & aVPoly,
Pt2dr dir,
REAL esp,
Line_St lst
)
{
ElFifo<Pt2dr> poly(aVPoly,true);
HWind HW(*this,lst);
HPoly(HW,poly,dir,esp);
}
开发者ID:archeos,项目名称:micmac-archeos,代码行数:12,代码来源:basic.cpp
示例18: while
void GDSin::Gds2Ted::convert(GDSin::GdsStructure* src, laydata::tdtcell* dst)
{
//@FIXME!!! ged rid of this silly loop! GDS database is layer oriented now!
for(int2b laynum = 1 ; laynum < GDS_MAX_LAYER ; laynum++)
{
if (src->allLay(laynum))
{// layers
GDSin::GdsData *wd = src->fDataAt(laynum);
while( wd )
{
word tdtlaynum;
if (_theLayMap.getTdtLay(tdtlaynum, laynum, wd->singleType()) )
{
// convert only if layer/data type pair is defined
laydata::tdtlayer* dwl = static_cast<laydata::tdtlayer*>(dst->securelayer(tdtlaynum));
switch( wd->gdsDataType() )
{
case gds_BOX: box (static_cast<GDSin::GdsBox*>(wd) , dwl, laynum); break;
case gds_BOUNDARY: poly(static_cast<GDSin::GdsPolygon*>(wd) , dwl, laynum); break;
case gds_PATH: wire(static_cast<GDSin::GDSpath*>(wd) , dwl, laynum); break;
case gds_TEXT: text(static_cast<GDSin::GdsText*>(wd) , dwl); break;
default: assert(false); /*Error - unexpected type*/
}
}
//else
//{
// // The message below could be noughty - so put it in place ONLY if the data type
// // is different from default
// std::ostringstream ost;
// ost << "Layer: " << laynum << "; data type: " << wd->singleType() <<
// "; found in GDS database, but not in the conversion map.";
// tell_log(console::MT_INFO,ost.str());
//}
wd = wd->last();
}
}
}
if (src->allLay(0))
{// references
GDSin::GdsData *wd = src->fDataAt(0);
while( wd )
{
switch( wd->gdsDataType() )
{
case gds_SREF: ref (static_cast<GDSin::GdsRef*>(wd) , dst); break;
case gds_AREF: aref(static_cast<GDSin::GdsARef*>(wd) , dst); break;
default: assert(false); /*Error - unexpected type*/
}
wd = wd->last();
}
}
dst->resort();
}
开发者ID:BackupTheBerlios,项目名称:toped-svn,代码行数:53,代码来源:datacenter.cpp
示例19: iOrigin
// Constructors
View::View()
: iOrigin(0.0, 0.0)
{
iColor[0] = 0.0;
iColor[1] = 1.0;
iColor[2] = 0.0;
Polygon2 poly(gPoints, gPoints+4);
setCollisionPolygon(poly);
// cout << hex << "0x" << (int)this << " view created" << endl; // DEBUG
setTag(gNextTag++); // DEBUG
}
开发者ID:ordovician,项目名称:LusionEngine,代码行数:13,代码来源:View.cpp
示例20: main
int main(int argc, char** argv)
{
bem2d::freqtype k={10,0};
int n=3*k.re;
std::vector<bem2d::Point> triangle;
triangle.push_back(bem2d::Point(0,0));
triangle.push_back(bem2d::Point(1,0));
triangle.push_back(bem2d::Point(.5,.5*sqrt(3)));
bem2d::Polygon poly(triangle,n);
bem2d::pGeometry pgeom=poly.GetGeometry();
bem2d::PolBasis::AddBasis(0,pgeom);
bem2d::Point direction=bem2d::normalize(bem2d::Point(1,1));
bem2d::PlaneWave pw(direction,k);
bem2d::CombinedPlaneWave cpw(direction,k);
bem2d::SoundSoftScattering<bem2d::PlaneWave,bem2d::CombinedPlaneWave> soundsoft(pgeom,k,pw,cpw);
soundsoft.SetQuadOption(5,5,0.15);
soundsoft.set_polygons(pgeom);
soundsoft.set_plotInterior();
std::cout << "Discretizing with k=" << bem2d::complex(k.re,k.im) << " and n=" << pgeom->size() << std::endl;
clock_t start, finish;
double time;
start=clock();
soundsoft.Discretize();
finish=clock();
time=(double(finish)-double(start))/CLOCKS_PER_SEC;
std::cout << "Computing time (minutes): " << time/60 << std::endl;
int xpts=300;
int ypts=300;
bem2d::pOutputHandler pout(new bem2d::GplotOutput(xpts,ypts,-4,8,-4,8,"wedge"));
soundsoft.SetOutput(pout);
soundsoft.WriteAll();
}
开发者ID:YangchenVR,项目名称:bem2d,代码行数:52,代码来源:triangle.cpp
注:本文中的poly函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论