|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "afxcoll.h"
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
#include "DrawOperator/Xy.h"
|
|
|
|
|
|
#include "geos_c.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace NItem
|
|
|
|
|
|
{
|
|
|
|
|
|
class GenerateSECReserve
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
GenerateSECReserve();
|
|
|
|
|
|
~GenerateSECReserve();
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> PDP<EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param wells <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꼯<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param width <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param height <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>ĸ߶<EFBFBD>
|
|
|
|
|
|
* @param angle_deg <EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
* @param gap ȥ<EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param boundaryPoints <EFBFBD><EFBFBD><EFBFBD>ڲü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿԼ<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD>㼯<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param useClip <EFBFBD>Ƿ<EFBFBD>ִ<EFBFBD>б߽<EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @return PDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
std::vector<std::vector<CPoint2D>> CalculatePDP(
|
|
|
|
|
|
const std::vector<CPoint2D>& wells,
|
|
|
|
|
|
double width, double height, double angle_deg, double gap,
|
|
|
|
|
|
const std::vector<CPoint2D>& boundaryPoints,
|
|
|
|
|
|
bool useClip);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> PDNP <EFBFBD><EFBFBD> PUD <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param wells <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꼯<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param width <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param height <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>ĸ߶<EFBFBD>
|
|
|
|
|
|
* @param angle_deg <EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
* @param gap ȥ<EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* ¶m pud_mult PUD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param boundaryPoints <EFBFBD><EFBFBD><EFBFBD>ڲü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿԼ<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD>㼯<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param useClip <EFBFBD>Ƿ<EFBFBD>ִ<EFBFBD>б߽<EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param pdnpLines pdnp<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param pudLines pud<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
void CalculateExpansion(
|
|
|
|
|
|
const std::vector<CPoint2D>& wells,
|
|
|
|
|
|
double width, double height, double angle_deg, double gap, double pud_mult,
|
|
|
|
|
|
const std::vector<CPoint2D>& boundaryPoints,
|
|
|
|
|
|
bool useClip,
|
|
|
|
|
|
std::vector<std::vector<CPoint2D>>& pdnpLines,
|
|
|
|
|
|
std::vector<std::vector<CPoint2D>>& pudLines);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> PDNP <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param wells <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꼯<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param width <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param height <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>ĸ߶<EFBFBD>
|
|
|
|
|
|
* @param angle_deg <EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
* @param gap ȥ<EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param useClip <EFBFBD>Ƿ<EFBFBD>ִ<EFBFBD>б߽<EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param boundaryPoints <EFBFBD><EFBFBD><EFBFBD>ڲü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿԼ<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD>㼯<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param pdnpLines pdnp<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
void CalculatePDNP(
|
|
|
|
|
|
const std::vector<CPoint2D>& wells, double width, double height, double angle_deg, double gap,
|
|
|
|
|
|
bool useClip, const std::vector<CPoint2D>& boundaryPoints,
|
|
|
|
|
|
std::vector<std::vector<CPoint2D>>& pdnpLines);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> PUD <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param wells <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꼯<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param width <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param height <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>ĸ߶<EFBFBD>
|
|
|
|
|
|
* @param angle_deg <EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
* @param gap ȥ<EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* ¶m pud_mult PUD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param useClip <EFBFBD>Ƿ<EFBFBD>ִ<EFBFBD>б߽<EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param boundaryPoints <EFBFBD><EFBFBD><EFBFBD>ڲü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿԼ<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD>㼯<EFBFBD><EFBFBD>
|
|
|
|
|
|
* @param pudLines pud<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
void CalculatePUD(
|
|
|
|
|
|
const std::vector<CPoint2D>& wells, double width, double height, double angle_deg, double gap, double pud_mult,
|
|
|
|
|
|
bool useClip, const std::vector<CPoint2D>& boundaryPoints,
|
|
|
|
|
|
std::vector<std::vector<CPoint2D>>& pudLines);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void Init();
|
|
|
|
|
|
|
|
|
|
|
|
void InternalClipAndExport(
|
|
|
|
|
|
GEOSGeometry* geom,
|
|
|
|
|
|
const std::vector<CPoint2D>& boundaryPoints,
|
|
|
|
|
|
bool useClip,
|
|
|
|
|
|
std::vector<std::vector<CPoint2D>>& outLines);
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|